2015-04-05 106 views
2

我試圖使用普通的舊XMLHttpRequest訪問twitter API。它不工作。我試過了很明顯的事情(刷新我的憑證等)。Twitter僅限純應用程序身份驗證

任何想法? 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"); 

} 

回答

0

我得到一個類似的問題,與返回以下內容:

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

但是到了後期數據移動到其自身的變種,然後與VAR

設置內容長度固定它
var postData = "grant_type=client_credentials"; 
... 
authRequest.setRequestHeader("Content-Length", postData.length); 
... 
authRequest.send(postData); 
相關問題