发送http post请求以从身份验证代码获取令牌时出现400错误请求? [英] 400 Bad Request when sending http post request to get token from auth code?
问题描述
我正在尝试访问 accounts.google.com 以从使用 HTTP 发布请求收到的授权代码中获取令牌.
I am trying to access accounts.google.com to get token from authorization code received using HTTP post request.
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 帖子,包含以下参数:
here is the document which i am using: After the web server receives the authorization code, it may exchange the authorization code for an access token and a refresh token. This request is an HTTPs post, and includes the following parameters:
字段说明code 初始请求返回的授权码client_id 应用注册时获取的client_idclient_secret 应用注册时获取的客户端密码redirect_uri 向应用程序注册的 URIgrant_type 如 OAuth 2.0 规范中所定义,该字段必须包含一个 authorization_code 的值实际请求可能如下所示:
Field Description code The authorization code returned from the initial request client_id The client_id obtained during application registration client_secret The client secret obtained during application registration redirect_uri The URI registered with the application grant_type As defined in the OAuth 2.0 specification, this field must contain a value of authorization_code The actual request might look like:
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
对此请求的成功响应包含以下字段:
A successful response to this request contains the following fields:
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
推荐答案
我得到了这个工作..我正在为那些被困在这个问题上的人分享代码:
I got this working.. i am sharing the code for those who are stuck with this:
$.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);
}
});
但现在我有新问题.url 得到 200 OK 响应,但我根本没有得到响应
but now i have new issue. The url get 200 OK response but i am not getting response at all
这篇关于发送http post请求以从身份验证代码获取令牌时出现400错误请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!