GoogleConntectionFactory无法创建连接

时间:2012-07-30 02:28:10

标签: spring spring-social

每个人都欢迎!

我有这样的错误:

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捕获。

是否存在任何问题?

2 个答案:

答案 0 :(得分:0)

当您应该使用OAuth2身份验证时,您似乎正在使用旧的AuthSub身份验证。我建议您查看example application,具体请参阅SocialConfig如何创建用于登录的ProviderSignInController。

答案 1 :(得分: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);

其中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无法识别范围设置。

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