Так что я не уверен, является ли это ошибкой с модулем oauth
или API-интерфейс Instapaper слишком строг при анализе заголовков Authorization
, но мне пришлось добавить пробел после запятой для разделителя заголовка.В любом случае это, кажется, вызывает все проблемы (400 ошибок).
oauth в настоящее время создает заголовки следующим образом:
oauth_consumer_key=SomeKey,oauth_consumer_secret=SomeSecret...
необходимо
oauth_consumer_key=SomeKey, oauth_consumer_secret=SomeSecret...
Я изменил файл oauth.js
, чтобы отразить это.https://github.com/ciaranj/node-oauth/blob/master/lib/oauth.js#L121
добавлен пробел после запятой к концу строки
authHeader+= "" + this._encodeData(orderedParameters[i][0])+"=\""+ this._encodeData(orderedParameters[i][1])+"\", ";
Вот мой пример рабочего клиента:
var OAuth = require('oauth').OAuth;
var consumerKey = 'chill';
var consumerSecret = 'duck';
var oa = new OAuth(
null,
'https://www.instapaper.com/api/1/oauth/access_token',
consumerKey,
consumerSecret,
'1.0',
null,
'HMAC-SHA1'
);
var x_auth_params = {
'x_auth_mode': 'client_auth',
'x_auth_password': 'yourpass',
'x_auth_username': 'yourusername@whatever.com'
};
oa.getOAuthAccessToken(null, null, null, x_auth_params, function (err, token, tokenSecret, results) {
// CAN HAZ TOKENS!
console.log(token);
console.log(tokenSecret);
// ZOMG DATA!!!
oa.get("https://www.instapaper.com/api/1/bookmarks/list", token, tokenSecret, function (err, data, response) {
console.log(data);
});
});
Надеюсь, это поможет!