Twitter仅限应用程序身份验证

时间:2015-04-05 19:57:24

标签: javascript authentication web xmlhttprequest twitter-oauth

我尝试使用普通的旧XMLHttpRequest访问twitter API。而且它不起作用。我尝试过显而易见的事情(刷新我的凭据等)。

有什么想法吗? Twitter不允许客户端API访问???

function getAccessToken () {
    var secret = encodeURI("xxx");
    var key = encodeURI("yyy");
    var keyAndSecret = key + ":" + secret;
    var encoded = btoa(keyAndSecret);

    var authRequest = new XMLHttpRequest();
    authRequest.open("POST", "https://api.twitter.com/oauth2/token");
    authRequest.setRequestHeader("Authorization", "Basic " + encoded);
    authRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
    authRequest.onreadystatechange = function () {
        if (authRequest.readyState == 4) {
            var accessToken = JSON.parse(authRequest.response);
            console.log("access token:", accessToken);
        }
    }           
    authRequest.send("grant_type=client_credentials");

}

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并返回以下内容:

       code: 170,
       message: 'Missing required parameter: grant_type',
       label: 'forbidden_missing_parameter' 

但是通过将post数据移动到它自己的var然后用var

设置content-length来修复它
var postData = "grant_type=client_credentials";
...
authRequest.setRequestHeader("Content-Length", postData.length);
...
authRequest.send(postData);

答案 1 :(得分:0)

对于那些稍后引用它的人,看起来问题可能是编码方案。我使用https://www.base64encode.org/对消费者密钥/秘密进行编码,并且请求已经完成(之前已经有403个被丢弃)。