2014-02-17 80 views
0
clientId = xxxxxx 
    clientSecret = xxxxxxxx 
    applicationHost = xxxxxxxxx 

我的授权码的请求:谷歌的OAuth2操场返回“未授权客户端”

OAuthClientRequest oAuthClientRequest = OAuthClientRequest 
       .authorizationProvider(OAuthProviderType.GOOGLE) 
       .setResponseType("code") 
       .setClientId(clientId) 
       .setParameter("access_type", "online") 
       .setRedirectURI(applicationHost + "auth/google/callback") 
       .setScope("https://www.googleapis.com/auth/plus.login") 
       .buildQueryMessage(); 

     response.sendRedirect(oAuthClientRequest.getLocationUri()); 

我得到一个授权码与此有关。但每当我使用此代码发送access_token的请求时,我都会收到错误消息。 (代码400)

我的请求的access_token:

OAuthClientRequest oAuthClientRequest = OAuthClientRequest 
      .tokenProvider(OAuthProviderType.GOOGLE) 
      .setGrantType(GrantType.AUTHORIZATION_CODE) 
      .setClientId(clientId) 
      .setClientSecret(clientSecret) 
      .setParameter("access_type", "online") 
      .setRedirectURI(applicationHost + "auth/google/callback") 
      .setCode(code) 
      .buildQueryMessage(); 

    GitHubTokenResponse oAuthResponse = oAuthClient.accessToken(
      oAuthClientRequest, GitHubTokenResponse.class); 
    return oAuthResponse.getAccessToken(); 

的OAuth2游乐场响应:

HTTP/1.1 400 Bad Request 
    Alternate-protocol: 443:quic 
    Content-length: 37 
    X-xss-protection: 1; mode=block 
    X-content-type-options: nosniff 
    X-google-cache-control: remote-fetch 
    -content-encoding: gzip 
    Server: GSE 
    Via: HTTP/1.1 GWA 
    Pragma: no-cache 
    Cache-control: no-cache, no-store, max-age=0, must-revalidate 
    Date: Mon, 17 Feb 2014 09:03:52 GMT 
    X-frame-options: SAMEORIGIN 
    Content-type: application/json 
    Expires: Fri, 01 Jan 1990 00:00:00 GMT 
    { 
     "error": "unauthorized_client" 
    } 

请帮助我。提前致谢。

+0

oauth playground? – pinoyyid

+0

https://developers.google.com/oauthplayground/ oauth playground在提供授权码时会生成访问令牌和刷新令牌。 – Suva

回答

1

您正在从您的应用程序(即客户端ID XXXXX)获取授权码并将其粘贴到另一个应用程序(客户端ID为YYYYY的oauth操场)并希望它能够正常工作?

这不会奏效。

如果你进入Gear选项并输入你的应用程序的凭据,它可能会工作。但我有点困惑,为什么你这样做。你试图解决什么问题?

这个答案可能有帮助How do I authorise an app (web or installed) without user intervention? (canonical ?)

+0

我基本上想用授权码生成演示访问令牌。即使我运行我的代码(检查access_token请求部分)并发送http请求,我仍然得到错误代码400. – Suva

+0

我的目标是让用户通过Facebook,谷歌,微博等登录我已经成功Facebook,但谷歌出了问题。 – Suva

+0

哦,并且非常感谢Oauth游乐场的链接。它缺乏我自己的配置。 – Suva

相关问题