0

大家好!

我有这样的错误:

WARN/DefaultRequestDirector(22739): Authentication error: Unable to respond to any of
these challenges: {authsub=WWW-Authenticate: AuthSub
realm="https://www.google.com/accounts/AuthSubRequest" allowed-
scopes="https://www.googleapis.com/auth/userinfo.email,
https://www.googleapis.com/auth/userinfo.profile,
https://www.googleapis.com/auth/userinfo.id"}

它发生在我想建立连接时:

AccessGrant accessGrant = new AccessGrant(accessToken);
Connection<Google> connection = connectionFactory.createConnection(accessGrant);

结果,我将异常捕获为 Auth 401。

有没有人遇到过这样的问题?

4

2 回答 2

0

我找到了它发生的原因。问题在范围内。我只设置了https://www.googleapis.com/auth/plus.me 范围。创建连接还不够。

结果,我收到了下一条消息:

WARN/DefaultRequestDirector(22739): Authentication error: Unable to respond to any of
these challenges: {authsub=WWW-Authenticate: AuthSub
realm="https://www.google.com/accounts/AuthSubRequest" allowed-
scopes="https://www.googleapis.com/auth/userinfo.email,
https://www.googleapis.com/auth/userinfo.profile,
https://www.googleapis.com/auth/userinfo.id"}

如您所见,google oauth2 要求https://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/userinfo.profilehttps://www.googleapis.com/ auth/userinfo.id范围。

在我添加了这个范围之后,我得到了一个新的错误,比如“invalid_scope”。

问题出在连接网址中。

我将连接网址创建为:

connectionFactory.getOAuthOperations().buildAuthorizeUrl(GrantType.AUTHORIZATION_CODE, params);

其中参数:

OAuth2Parameters params = new OAuth2Parameters();
params.setRedirectUri(redirectUri);
params.setScope("https://www.googleapis.com/auth/userinfo.email+" + "https://www.googleapis.com/auth/userinfo.profile+" + "https://www.googleapis.com/auth/userinfo.id+" + 
"https://www.googleapis.com/auth/plus.me");

在这种情况下,符号“+”被解码为另一个,Google oauth2 api 无法识别范围集。

我希望这个解决方案将来能对某人有所帮助。

于 2012-08-24T02:30:26.907 回答
0

当您应该使用 OAuth2 身份验证时,您似乎正在使用旧的 AuthSub 身份验证。我建议您看一下示例应用程序,具体请参见SocialConfig如何创建用于登录的 ProviderSignInController。

于 2012-07-30T05:29:17.737 回答