2015-09-01 108 views
0

我的日子不好過調用API 成功後檢索用戶的和的access_token他secret_token,就像這樣:如何使用OAuth 1.0調用API?

{ 
    oauth_token: '4xxxxxxxx-asdasdasd......', 
    oauth_token_secret: 'XXX........', 
    user_id: '4xxxxxxxx' 
} 

我檢索到的那些用戶登錄在代表我的應用程序。例如,像Twitter sign-in implementation

現在用於從API中檢索數據 我不確定OAuth 1.0的規範,但我知道在OAuth 2.0中,您可以簡單地在標頭中使用'Authorization: Bearer ' . $accessToken。 OAuth 1.0是否需要爲每個API調用生成另一個簽名?

我在這個問題中搜索並沒有找到一個明確的解決方案。 以前感謝

+0

您正在使用哪種語言?你在使用特定的圖書館嗎? –

+0

NodeJS。沒有圖書館使用.. –

+0

你已經寫了什麼代碼? –

回答

0

通常對於OAuth1.0而言,Authorization標頭的值將以OAuth and a bunch of fields的值發送。有一個關於它的規範,還會生成一個簽名並添加到該字符串中,但您不必親自去做。可以使用request模塊。例如這裏是你如何能得到用戶的配置文件Twitter的:

request.get('https://api.twitter.com/1.1/users/show.json', { 
    oauth:{ 
    consumer_key:'...', 
    consumer_secret:'...', 
    token:'...', 
    token_secret:'...' 
    }, 
    qs:{user_id:'...'} // or screen_name 
}, function (err, res, body) {}) 

您可以使用上面的代碼與任何OAuth1.0提供商。您需要傳遞的是您的應用程序和用戶憑證。在極少數情況下,您可能需要通過其他選項(請參閱oauth signing部分)。

+0

謝謝,但我正在使用Twitter Ads-API,它不適用於純應用程序驗證(如在您的答案中)。我已經設法生成自己的簽名並授權請求終結點,如'POST oauth/access_token'。但是當我試圖使用用戶令牌從API調用時,我失敗了。 –

+0

等等,我不是在談論授權流程,我向您展示瞭如何在獲得用戶證書後提出正確的請求。如果您必須使用服務器流來授權帳戶,則可以使用[授予](https://github.com/simov/grant)。 – simo

+0

在請求模塊中使用oauth會給我'發出此請求的客戶端應用程序無法訪問此API' - 如果我錯了,請更正我的意思 - 這意味着這是僅適用於應用程序的實現。我正在登錄一個用戶,然後嘗試使用他的憑據來檢查他的推特廣告系列。我無法使用用於該類請求的用戶憑證構建授權頭,並且沒有關於此的文檔。我更喜歡使用我自己的代碼(儘管Grant看起來很棒!)。有什麼想法嗎? –