4

我有一個node.js程序,我嘗試使用googleapis模塊(https://github.com/google/google-api-nodejs-client)版本0.2.5-alpha。鏡像API和Node.JS

我可以使用原始HTTP進行調用而沒有任何問題,所以我知道我是API白名單,我正確地進行了身份驗證和授權,並且正在請求正確的範圍和所有內容。如果我使用相同的access_token在時間線中插入,則會在回調中收到錯誤。我也發現了plus API,使用這個API的調用工作正常。

的代碼片段,發現了API,這似乎沒有問題的工作:

var client; 
googleapis 
    .discover('plus', 'v1') 
    .discover('mirror', 'v1') 
    .execute(function(err,data){ 
    console.log(err); 
    client = data; 
    }); 

代碼片段做呼叫:

 
    client.mirror.timeline.insert({ 
    text: "test 1 " 
    }).withAuthClient(user.auth).execute(function(err,result,res){ 
     console.log('++ start ++'); 
     console.log('+err ', err); 
     console.log('+result', result); 
     //console.log('+res ', res); 
     console.log('++ end ++'); 
    }); 

回調過程中記錄的內容:

 
++ start ++ 
+err { code: 400, 
    message: 'Required', 
    data: [ { domain: 'global', reason: 'required', message: 'Required' } ] } 
+result undefined 
++ end ++ 

任何指示什麼是「必需」,如何提供它,或如何進一步調試錯誤,如這個?

回答

5

UPDATE:在resource財產不再需要這樣的原代碼應該只是工作,而不是所提出的解決方案。

由於Node.js的客戶端庫是基於JavaScript客戶端庫,您需要設置請求主體中的「資源」屬性:

client.mirror.timeline.insert({resource: { 
    text: "test 1 " 
    }}).withAuthClient(user.auth).execute(function(err,result,res){ 
     console.log('++ start ++'); 
     console.log('+err ', err); 
     console.log('+result', result); 
     //console.log('+res ', res); 
     console.log('++ end ++'); 
    }); 
+0

完美的作品。謝謝!是否需要引用「資源」屬性,或者有哪些其他屬性可用? – Prisoner 2013-05-09 10:02:59

+1

這對於0.2.12-alpha和之前是這樣。截至最新的googleapis node.js模塊(v 0.2.13-alpha),「resource」屬性不是必需的。你原來的代碼會起作用。 – 2013-07-16 00:09:23