Twitter应用程序专用身份验证

Twitter Application-Only Authentication

本文关键字:身份验证 专用 应用程序 Twitter      更新时间:2023-09-26

我正在尝试使用一个普通的旧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");
}

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

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

但通过将帖子数据移动到自己的var,然后使用该var 设置内容长度来修复它

var postData = "grant_type=client_credentials";
...
authRequest.setRequestHeader("Content-Length", postData.length);
...
authRequest.send(postData);

对于那些稍后引用的人来说,问题可能是编码方案。我曾经https://www.base64encode.org/对消费者密钥/秘密进行编码,然后请求通过了(之前是403)。