Я создаю приложение с node.js и express.js. Я использую модуль node-oauth для подключения к yahoo, чтобы я мог получить запросы к api. Я получаю ошибку нижеnode-oauth Yahoo API oAuth2 issue
{ 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 :) Еще раз спасибо –
Я думаю, что проблема может заключаться в том, что yahoo требует, чтобы вы передали свой ключ/секрет yahoo через «Авторизация Basic» 'header на вызове' get_token'. К сожалению, модуль npm oauth предполагает, что вы хотите отправить его в тело сообщения https://github.com/ciaranj/node-oauth/blob/a4b96a/lib/oauth2.js#L163 –
... но вы можете указать его как часть опции customHeaders в конструкторе 'OAuth2'. Я обновил свой ответ, чтобы включить это. –