当前位置: 首页 > 知识库问答 >
问题:

当发送http post请求从auth代码中获取令牌时,400错误的请求?

翁钧
2023-03-14

我试图访问accounts.google.com,从使用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_secret在应用程序注册过程中获得的客户端秘密redirect_uri在应用程序grant_type中注册的URI如OAuth2.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

共有1个答案

公良安邦
2023-03-14

我搞定了..我为那些被困在这里的人分享代码

$.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响应,但我根本没有得到响应

 类似资料:
  • 我正在尝试从访问代码中获取访问令牌。但存在 400 错误请求错误的错误 我正在使用此链接获取访问代码 https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 响应此链接,我正在获取查询字符串中的代码,返回 URL 代码=Mh12d04c8

  • 我不明白为什么创建对象的请求不再有效。我用mysql和sequelize创建模型。 我为每个请求填写用户的令牌,进行连接,检索他的个人资料,从数据库中检索所有文章,它工作了,但现在我不能再创建任何文章。 我做了控制台.log(req.body)我的函数,但我有这个:{}。我的函数从我的第一个条件给了我一个400错误。当我发送请求时,在VSC上,我有“ 代码:'ERR_HTTP_HEADERS_SE

  • 我可以获得帐户ID为#10540382的JWT访问令牌,这是我为我们公司的电子签名实现创建的。我用这个帐户完成了JWT实现,一切顺利。但是现在公司提供了我的新帐户ID#11024495。但是有了这个新帐户,我没有获得访问令牌。令牌APIhttps://account-d.docusign.com/oauth/token现在返回“远程服务器返回错误:(400)错误请求”。 DocuSign的人能帮我

  • 我正在使用实现一个联系人应用程序。现在,我正试图通过发送以下格式的put请求来更新联系人 我将XML作为字符串发送,作为请求的主体。这是我的xmlString(请求主体) 我写了下面的代码来发送更新联系人的PUT请求。 当我试图在中发送请求时,联系人更新成功。但是当我试图运行上面的程序时,我得到了 400错误请求错误 我不知道我哪里出错了。任何帮助都将不胜感激!

  • 我是django-1.6的新手。当我使用运行django服务器时,它运行得非常好。但是,当我在设置文件中将更改为时,服务器停止运行,并在命令提示下出现以下错误: 我将更改为,在浏览器中我得到错误信息: 是否可以在没有调试模式的情况下运行Django?