我正在使用播放身份验证来登录与谷歌Oauth2用户。现在我想要获取访问令牌,这样我就可以使用一些Google API了。
有人能帮我吗?是不是很明显,我错过了该怎么做?
我可以得到这样的用户(从示例中):
final AuthUser u = PlayAuthenticate.getUser(session()); 但我真正需要的是
OAuth2AuthUser.getOAuth2AuthInfo().getAccessToken()我不能将AuthUser转换为OAuth2AuthUser。那么我该怎么做呢?
发布于 2013-03-01 22:14:11
我们提出了一个覆盖UserServicePlugin的update方法的解决方案。只需创建一个从com.feth.play.module.pa.service.UserServicePlugin,派生的类,并在您的play.plugins文件中将该类注册为插件(当您使用play-authenticate时,您可能已经这样做了)。
然后,在被覆盖的update方法中,您可以根据需要存储访问令牌。
@Override
public AuthUser update(final AuthUser knownUser)
{
if (knownUser instanceof OAuth2AuthUser)
{
OAuth2AuthUser oAuth2AuthUser = (OAuth2AuthUser) knownUser;
String oauth2accessToken = oAuth2AuthUser.getOAuth2AuthInfo().getAccessToken();
Context.current().session().put("oauth2accessToken", oauth2accessToken);
}
return knownUser;
}documentation说,这是“当用户登录时调用的方法。您可以使用来自登录提供商的数据来更新此处的配置文件,或者更改最后一次登录日期。”
实际上,调用Authenticate.authenticate (就像您在路由中所做的那样)依次调用PlayAuthenticate.handleAuthentication、PlayAuthenticate.loginAndRedirect、PlayAuthenticate.storeUser,最后更新当前用户服务插件。
https://stackoverflow.com/questions/13285726
复制相似问题