【发布时间】:2023-04-10 03:39:01
【问题描述】:
我在尝试通过 Node.js 连接到 Tumblr API 时遇到了可笑的困难。我可以整天拉数据,但在发布时总是收到 401 错误,即使我已经完成了 OAuth 握手。
var Tumblr = require('tumblrwks'),
OAuth = require('oauth').OAuth;
var oa = new OAuth(
'http://www.tumblr.com/oauth/request_token',
'http://www.tumblr.com/oauth/access_token',
keys.consumerKey,
keys.consumerSecret,
"1.0A",
null,
"HMAC-SHA1"
);
oa.getOAuthRequestToken(
function(error, oauth_token, oauth_token_secret, results) {
if (error) return 401;
keys.accessToken = oauth_token;
keys.accessTokenSecret = oauth_token_secret;
tumblr = new Tumblr({
consumerKey: keys.consumerKey,
consumerSecret: keys.consumerSecret,
accessToken: keys.accessToken,
accessSecret: keys.accessTokenSecret
}, blogName);
}
);
exports.new = function(req, res) {
tumblr.post('/post',
{ type: 'text', tags: 'api,test', title: 'Test API Post', body: 'It works!' },
function(err, json){
if(err) {
console.log("Error creating post\n", err);
} else {
res.send(json);
}
}
);
};
exports.posts = function(req, res) {
tumblr.get('/posts', function(err, json){
if(err) {
console.log("Error getting posts\n", err);
} else {
res.send(json);
}
});
};
在服务器启动时,发出 OAuth 请求,我返回一个 OAuth 令牌、OAuth Secret 和 Results = "{ oauth_callback_confirmed: 'true' }"。这些令牌包含在后续的 POST 请求中,但我得到的响应是:
[Error: {"meta":{"status":401,"msg":"Not Authorized"},"response":[]}]
GET 请求很好,并按预期返回所有帖子。但是,我无法获得要发布的新内容。我错过了什么?
【问题讨论】:
-
嗨史蒂夫。我的代码目前看起来非常接近您的代码,并且我遇到了同样的错误。你修过吗?
-
还没有。我目前正在与 Tumblr 的 API 技术团队合作解决这个问题。问题解决后,我将提供更新。希望它也能帮助您解决问题。
-
你在这里只使用了请求令牌!您需要获取 access_token 和 access_secret 然后进行身份验证...我有点一起破解了一些东西,但我已将其发布为答案。下面的代码就是我现在正在使用的代码。