API OAuth回调标头问题未正确格式化

时间:2017-01-10 17:34:08

标签: javascript api twitter oauth

我正在尝试连接到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)
    });
}

1 个答案:

答案 0 :(得分:0)

数据基本上是您的请求(方法和参数),以Twitter API site中描述的方式编码 最终会像

那样
urlEncode(headers.keys().sort().map(key => `${key}=${headers[key]}`).join("&"))