正如它在锡上所说的那样。
无论如何,这段代码应该正常工作。它完全遵循https://dev.twitter.com/oauth/application-only页面所说的内容。然而,它不断返回{{"errors":[{"code":99,"message":"Unable to verify your credentials","label":"authenticity_token_error"}]}
[Finished in 0.551s]
,我不明白为什么。
var request = require('request');
var options = {
url: 'https://api.twitter.com/oauth2/token',
method: 'POST',
headers: {
"Authorization": "Basic " + new Buffer("[key]:[secretkey]").toString('base64'),
"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"
},
body: "grant_type=client_credentials"
};
request.post(options, function(error, response, body){
console.log(body);
});
作为一个快速说明,此代码中省略了密钥和密钥,因为它存在固有的敏感性。您可以将自己的密钥/密钥放在那里进行尝试,但我不愿意提供自己的密钥/密钥。
谢谢!
编辑:
最初的问题是contentType应该是Content-Type,并且在技术上修复了它,但实际上它只是改变了我得到的错误。
更新:
将缓冲区密钥转码为base64并返回显示授权密钥的完整性在整个编码过程中保持不变,并且Basic [base64keyhash]根据Twitter提供的文档有效。
答案 0 :(得分:0)
由于您已经指定了方法:" POST"在选项中,尝试使用request()而不是request.post():
var request = require('request');
var options = {
url: 'https://api.twitter.com/oauth2/token',
method: 'POST',
headers: {
"Authorization": "Basic " + new Buffer("[key]:[secretkey]").toString('base64'),
"contentType":"application/x-www-form-urlencoded;charset=UTF-8"
},
body: "grant_type=client_credentials"
};
request(options, function(error, response, body){
if(error) {
console.log(error);
} else {
console.log(response.statusCode, body);
}
});