2013-11-26 57 views
4

我試圖訪問accounts.google.com從使用HTTP post請求接收的授權碼獲取令牌。400發送http post請求從授權代碼獲取令牌時的錯誤請求?

var searchurl = "https://accounts.google.com/o/oauth2/token"; 

    $.ajax({ 
     dataType: "json", 
     url:searchurl, 
     data: {code:auth_code, client_id:'client_id', client_secret:'secret', redirect_uri:'http%3A%2F%2Flocalhost:8085%2FGmailIntegration%2FgetAuthResponse1.jsp', grant_type:'authorization_code'}, 
     type:"Post", 
     contentType:"application/x-www-form-urlencoded", 
     success:function(data) { 
      alert(data); 
     }, 
     error: function(jqXHR, exception) { 
      console.log(jqXHR); 

     } 
    }); 

錯誤:

"NetworkError: 400 Bad Request - https://accounts.google.com/o/oauth2/token? 
code=4/PlKII3f0vsPUhl1QNIUXkiIhlfGA.sq9lFf-oCiIcXE-sT2ZLcbRFnpEphQI&client_id={clientid} 
&client_secret={secret}&redirect_uri=https://oauth2-login- 
demo.appspot.com/code&grant_type=authorization_code" 

請求:

Response Headers 
Alternate-Protocol 443:quic 
Cache-Control no-cache, no-store, max-age=0, must-revalidate 
Content-Encoding gzip 
Content-Type application/json 
Date Tue, 26 Nov 2013 14:20:56 GMT 
Expires Fri, 01 Jan 1990 00:00:00 GMT 
Pragma no-cache 
Server GSE 
X-Firefox-Spdy 3 
X-Frame-Options SAMEORIGIN 
X-XSS-Protection 1; mode=block 
x-content-type-options nosniff 

Request Header: 
Accept application/json, text/javascript, */*; q=0.01 
Accept-Encoding gzip, deflate 
Accept-Language en-US,en;q=0.5 
Cache-Control no-cache 
Connection keep-alive 
Content-Length 0 
Content-Type application/x-www-form-urlencoded 
Host accounts.google.com 
Origin http://localhost:8085 
Pragma no-cache 

這裏是我使用的文檔:Web服務器接收的授權碼後 ,它可以交換授權碼訪問令牌和刷新令牌。這個請求是HTTPS POST,幷包括以下參數:

字段描述 碼從初始請求 返回的授權代碼CLIENT_ID應用註冊 期間獲得的CLIENT_ID client_secret應用註冊 期間獲得的客戶端祕密REDIRECT_URI的URI與應用程序 grant_type正如在OAuth 2.0規範中定義的註冊,這個字段必須包含authorization_code 的值的實際請求可能看起來像:

POST /o/oauth2/token HTTP/1.1 
Host: accounts.google.com 
Content-Type: application/x-www-form-urlencoded 

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& 
client_id=8819981768.apps.googleusercontent.com& 
client_secret={client_secret}& 
redirect_uri=https://oauth2-login-demo.appspot.com/code& 
grant_type=authorization_code 

這個請求成功的響應包含以下字段:

Field Description 
access_token The token that can be sent to a Google API 
refresh_token A token that may be used to obtain a new access token. Refresh tokens are valid until the user revokes access. This field is only present if access_type=offline is included in the authorization code request. 
expires_in The remaining lifetime on the access token 
token_type Indicates the type of token returned. At this time, this field will always have the value Bearer 

回答

5

我得到這個工作..我共享的代碼對那些被卡住這個誰:

$.ajax({ 
     dataType: "json", 
     url:searchurl, 
     data: {code:code, client_id:'clientid', client_secret:'secret', redirect_uri:'http://localhost:8085/GmailIntegration/getAuthResponse.jsp', grant_type:'authorization_code'}, 
     type:"POST", 
     contentType:"application/x-www-form-urlencoded; charset=utf-8", 
     crossDomain:true, 
     cache : true, 
     success:function(data) { 
      alert(data); 
     }, 
     error: function(jqXHR, exception, errorstr) { 
      console.log(jqXHR); 
      alert(errorstr); 
     } 
    }); 

,但現在我有了新的問題。該網址獲得200 OK響應,但我沒有得到任何迴應

enter image description here

+0

你還在爲此工作嗎? – HardScale

+0

謝謝。這幫了我。我忘了在內容類型中添加'charset = utf-8',它解決了我的問題。 – Eric

+0

如果您解決了您的問題,請發佈解決方案。 –

相關問題