首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用OLTU时为谷歌获取OAuthProblemException: invalid_request

在使用OLTU时为谷歌获取OAuthProblemException: invalid_request
EN

Stack Overflow用户
提问于 2014-03-11 19:57:12
回答 2查看 1.7K关注 0票数 7

我正在使用Apache的Oltu库,并试图使用OAuth2通过谷歌进行身份验证。以下是相关代码:

代码语言:javascript
复制
OAuthAuthzResponse oar = OAuthAuthzResponse.oauthCodeAuthzResponse(request);
OAuthClientRequest clientReq = OAuthClientRequest
    .tokenProvider(OAuthProviderType.GOOGLE)
    .setClientId("<my-client-id>")
    .setClientSecret("<my-client-secret>")
    .setRedirectURI("https://test.example.com/oauthtest/oauth/google/auth")
    .setCode(oar.getCode())
    .setGrantType(GrantType.AUTHORIZATION_CODE)
    .buildQueryMessage();

OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());

// This call fails with the OAuthProblemException
OAuthAccessTokenResponse oAuthResponse = oAuthClient.accessToken(clientReq, 
        OAuthJSONAccessTokenResponse.class);

我可以通过Facebook进行认证,而不存在任何问题,但无论出于什么原因,这都是失败的。我可以在没有问题的情况下从OAuthAuthzResponse获得代码,所以我知道原始调用正在工作,但是这个后续调用失败了。

编辑:,我已经放弃使用Oltu,而坚持使用HttpClient库和手工执行OAuth舞蹈的更简单的方法。它对我来说效果更好,我会推荐给任何想要可靠地针对多个OAuth提供程序进行身份验证的人。只有推特要求我使用文士

EN

回答 2

Stack Overflow用户

发布于 2014-04-16 21:25:06

谷歌的OAuth2在HTTP方法的主体中发送参数,而不是查询字符串。

尝试将buildQueryMessage()替换为buildBodyMessage()方法。

票数 4
EN

Stack Overflow用户

发布于 2015-04-06 19:38:47

我有一个Spring,OAuth2和Google集成程序,在那里我可以访问受保护的资源,如用户配置文件等等。

我认为您需要重构代码才能使用以下代码:

代码语言:javascript
复制
OAuthClientRequest request = OAuthClientRequest
                .authorizationLocation("https://accounts.google.com/o/oauth2/auth")
                .setClientId("")
                .setRedirectURI("https://test.example.com/oauthtest/oauth/google/auth")
                .setResponseType("code")
                .setScope("https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read https://www.googleapis.com/auth/plus.me")
                .buildQueryMessage();

此外,在处理回调时,需要确保发送"TokenLocation“、"RedirectURI”和需要为setCode("")设置的“代码”值。

请将我的答案从Apache、Spring安全、OAuth2和转到您的查询。确保您的代码细节正确到位。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22335307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档