2015-03-25 64 views
0
$.ajax({ 
      url: 'https://api-ssl.bitly.com/oauth/access_token', 

      type: 'POST', 
      contentType: 'application/x-www-form-urlencoded', 
      dataType: 'json', 

      data: { Authorization: "Basic " + btoa('myusername' + ":" + '[email protected]') }, 
      success: function (result) { 
       console.log(result); 
      }, 
      error: function() { 
       alert("Cannot get data"); 
      } 
     }); 

我想通過提供用戶名和密碼從bitly api獲取訪問令牌,但它顯示invalid_client_authorization錯誤。有沒有人有同樣的想法?如何使用密碼和用戶名來獲得訪問令牌?

Bitly文檔:http://dev.bitly.com/authentication.html#resource_owner_credentials

回答

0

您與您的授權頭串聯您的用戶名。

您的授權和內容類型應該放在標題對象中。

jquery ajax方法沒有'type'屬性,你可能意思是'方法'。

而且,你不能同時發送數據類型: 'JSON',並設置內容類型爲 '應用程序/ x-WWW的形式了urlencoded'

$.ajax({ 
     url: 'https://api-ssl.bitly.com/oauth/access_token', 

     methdo: 'POST', 
     contentType: '', 
     dataType: 'json', 
     headers: { 
      'Authorization' : 'Basic ' + [INSERT YOUR HASH HERE], 
      'Content-Type' : 'application/x-www-form-urlencoded', 
     } 
     data: { $.serialize({ 
      username: YOURUSERNAME, 
      password: YOURPASSWORD 
     })}, 
     success: function (result) { 
      console.log(result); 
     }, 
     error: function() { 
      alert("Cannot get data"); 
     } 
    }); 

這應該這樣做

+0

嗨,它不符合您提供的代碼。此外,它在$ .serialize – 2015-03-26 05:46:02

+0

上給出錯誤此代碼示例不起作用,但它確實包含一些關鍵點。請參閱我的答案,以獲得簡明而有效的示例。 – 2016-05-13 15:34:58

0

固定@goncalomarques回答:

  • 移除頂層「的contentType」和「數據類型」
  • 刪除數據對象(否則用戶名和密碼被髮送作爲CLEA r文本,除了在頭中加密的用戶名和密碼)
  • 將「methdo」重命名爲「method」
  • 明確使用btoa()獲取Base 64編碼的散列(注意,不適用於較舊的IE版本)

$.ajax({ 
 
    url: 'https://api-ssl.bitly.com/oauth/access_token', 
 
    method: 'POST', 
 
    headers: { 
 
    'Authorization': 'Basic ' + btoa(YOURUSERNAME + ':' + YOURPASSWORD), 
 
    'Content-Type': 'application/x-www-form-urlencoded', 
 
    }, 
 
    success: function(result) { 
 
    console.log("success"); 
 
    console.log(result); 
 
    }, 
 
    error: function(response) { 
 
    console.log("Cannot get data"); 
 
    console.log(response); 
 
    } 
 
});


注: 我有這個例子的工作,但無法得到它由於跨源異常,使用內置的Stackoverflow編輯器(「運行代碼段」)。

相關問題