gpt4 book ai didi

node.js - Instapaper API 和 Javascript XAuth

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:14 24 4
gpt4 key购买 nike

我今天大部分时间都在尝试实现 Instapaper 的 XAuth API。我什至还没有获得 oauth token 。

知道我做错了什么吗?

我正在使用 node.js 和 oauth 模块。据我了解,我需要将用户名、密码、amd 模式作为额外参数传递。 oauth 模块应该处理所有的 oauth 参数。但事实并非如此。这是代码:

var OAuth = require('oauth').OAuth;

var oauth = new OAuth(
 '',
 'https://www.instapaper.com/api/1/oauth/access_token',
 'CONSUMER_KEY',
 'CONSUMER_SECRET',
 '1.0',
 null,
 'HMAC-SHA1',
 null
);

var extra = {
 'x_auth_username': 'USERNAME',
 'x_auth_password': 'PASSWORD',
 'x_auth_mode': 'client_auth'
};
var hello = oauth._prepareParameters('', '', 'POST', 'https://www.instapaper.com/api/1/oauth/access_token', null);
var url = 'https://www.instapaper.com/api/1/oauth/access_token';
var f = true;
for (var i in hello) {
 if (f) {
   url += '?';
   f = false;
 } else {
   url += '&';
 }
 url += hello[i][0] + '=' + hello[i][1];
}
console.log(url+'&x_auth_mode=client_auth&x_auth_username=&x_auth_password=')
oauth._performSecureRequest('', '', "POST", url+'&x_auth_mode=client_auth&x_auth_username=&x_auth_password=', null, null, null, function(error, data, response) {
 console.log(error, data)
});

它返回这个:

{ statusCode: 401,
data: 'oauth_signature [pWRf4W9k9nogID/O90Ng29bR2K0=] does not match expected value [eqJ8zD1bKeUa3InpDyegGDAbSnM=]' } 'oauth_signature [pWRf4W9k9nogID/O90Ng29bR2K0=] does not match expected value [eqJ8zD1bKeUa3InpDyegGDAbSnM=]'}

最佳答案

所以我不确定这是否是 oauth 模块的错误,或者 Instapaper 的 API 在解析 Authorization header 时是否过于严格,但我不得不添加一个 header 分隔符的逗号后的空格。无论如何,这似乎导致了所有问题(400 错误)。

oauth 目前将 header 构建为:

oauth_consumer_key=SomeKey,oauth_consumer_secret=SomeSecret...

需要

oauth_consumer_key=SomeKey, oauth_consumer_secret=SomeSecret...

我修改了 oauth.js 文件来反射(reflect)这一点。 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);

});

});

希望这对您有所帮助!

关于node.js - Instapaper API 和 Javascript XAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com