我成功從home_timeline.json檢索結果,但使用相同的oauth邏輯/users/show.json失敗(用戶/查找)。Twitter OAuth 1.1 show.json失敗,而home_timeline.json成功
{"errors":[{"code":32,"message":"Could not authenticate you."}]}
我將user_id添加到請求中,同時使用基礎url進行簽名。
請注意,home_timeline.json需要用戶上下文,而其他端點不需要用戶上下文,但不確定它是否相關。
應用程序是mobilegapgap(angular),並使用$ cordovaOauth.twitter註冊用戶並檢索oauth令牌。 我已經測試過使用郵差,同樣的事情發生。 OAuth對於home_timeline.json有效,但當嘗試使用相同的邏輯併爲users/show.json生成新的OAuth時,請求會因未經身份驗證而失敗。
下面是生成特徵碼
function createTwitterSignature(method, url) {
var oauthObject = {
oauth_consumer_key: clientId,
oauth_nonce: $cordovaOauthUtility.createNonce(10),
oauth_signature_method: "HMAC-SHA1",
oauth_token: token.oauth_token,
oauth_timestamp: Math.round((new Date()).getTime()/1000.0),
oauth_version: "1.0"
};
var signatureObj = $cordovaOauthUtility.createSignature(method, url,oauthObject, {},clientSecret, token.oauth_token_secret);
$http.defaults.headers.common.Authorization = signatureObj.authorization_header;
}
var url ='https://api.twitter.com/1.1/statuses/home_timeline.json';
//var url = 'https://api.twitter.com/1.1/users/show.json';
//var user_id = token.user_id;
createTwitterSignature('GET', url);
//return $resource(url+'?user_id='+user_id).query();
return $resource(url).query();
任何人有想法我究竟做錯了什麼?
謝謝Yuri! 將params添加到簽名解決了問題。 因爲它是GET請求,所以在調用服務時,我剛剛在URL中添加了params,但我會記住您對POST的建議。 再次...謝謝! – Devalzo