我正在用node.js和express.js構建一個應用程序。我正在使用node-oauth模塊連接到雅虎,這樣我就可以向api發出請求。我不斷收到以下node-oauth Yahoo API oAuth2問題
{ statusCode: 401,
data: '{"error":{"@lang":"en-US",
"@uri":"http://yahoo.com",
"description":"Not Authorized - Either YT cookies or a valid OAuth token must be passed for authorization","detail":"Not Authorized - Either YT cookies or a valid OAuth token must be passed for authorization"}}' }
錯誤嘗試了一段時間才能找出我的問題後,我要求社區要看看我的代碼,看看有什麼我做錯了。代碼如下。
"use strict";
// declare libraries
var express = require('express');
var router = express.Router();
var OAuth = require('OAuth');
// set yahoo key and secret
var yahooKey = '*****************************************************';
var yahooSecret = '*********************************';
var oauth2 = new OAuth.OAuth2(
yahooKey,
yahooSecret,
'https://api.login.yahoo.com/',
'oauth2/request_auth',
'oauth2/get_token',
null
);
router.get('/', function(req, res, next) {
var access_token = oauth2.getOAuthAccessToken(
'',
{'grant_type':'authorization_code', 'redirect_uri':'http://www.domain.com'},
function (e, access_token, refresh_token, results) {
// console.log(e);
// done();
});
// console.log(oauth);
oauth2.get(
'https://social.yahooapis.com/v1/user/circuitjump/profile?format=json',
access_token,
function (error, data, response){
if (error) {
console.error(error);
}
// data = JSON.parse(data);
// console.log(JSON.stringify(data, 0, 2));
// console.log(response);
});
res.render('index', { title: 'Express' });
});
// export route
module.exports = router;
任何幫助,非常感謝。我的大腦被炸...
謝謝一堆!這幾乎讓我幾乎在那裏。我仍然沒有獲得access_token,但現在正在獲取授權碼。我收到的錯誤是「{statusCode:400,data:'{」error「:」invalid_request「}'}」。無論如何,一旦我在那裏,我會回來,我會張貼我做的第5步:)再次感謝 –
我認爲問題可能是,雅虎要求你通過你的雅虎密鑰/祕密通過'Authorization Basic ''get_token'調用的頭部。不幸的是,npm oauth模塊假定你的意思是在郵件正文中發送它https://github.com/ciaranj/node-oauth/blob/a4b96a/lib/oauth2.js#L163 –
...但是你可以指定它作爲「OAuth2」構造函數中'customHeaders'選項的一部分。我已經更新了我的答案以包含此內容。 –