我正在尝试连接到Twitters API以便下载我自己的推文。我无法获得Twitter所需的OAuth的正确标头。以下是我到目前为止,有什么我遗失或做错了吗?
它还要求HMAC-SHA1要求两个输入一个KEY和DATA。我相信推特上的KEY是将消费者秘密和OAuth令牌秘密结合在一起,但是什么是DATA输入?
import axios from 'axios'
import hmacsha1 from 'hmacsha1'
const tweet = 'http://api.twitter.com/1.1/search/tweets.json?q=SamSchaeferSays';
const consumerKey = "XXX";
let nonce = createNonce();;
const signatureMethod = "HMAC-SHA1";
const timeStamp = Date.now();
const token = "XXXX";
const hiddenToken ="XXXXX";
const sig = `${consumerKey}&${hiddenToken}`;
const signature = btoa(hmacsha1(sig, "ok"));
const DST = `OAuth oauth_consumer_key="${consumerKey}", oauth_nonce="${nonce}", oauth_signature="${signature}", oauth_signature_method="${signatureMethod}", oauth_timestamp="${timeStamp}", oauth_token="${token}", oauth_version="1.0"`;
function createNonce() {
let randMe = "";
let possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 5; i++ )
randMe += possible.charAt(Math.floor(Math.random() * possible.length));
return btoa(randMe);
}
function getUserTweet() {
return axios.get(`${tweet}`, { headers: { 'Authorization': `${DST}` } }).then(function(response){
console.log(response.data)
console.log(response.status)
}).catch(function(error) {
console.log(error)
});
}
答案 0 :(得分:0)
数据基本上是您的请求(方法和参数),以Twitter API site中描述的方式编码 最终会像
那样urlEncode(headers.keys().sort().map(key => `${key}=${headers[key]}`).join("&"))