给客户的网站做了Google Authentication认证,一直都好用的,这几天突然注册不上新用户了
com.google.gdata.util.AuthenticationException: 403: Invalid AuthSub token.
at com.google.gdata.client.http.AuthSubUtil.exchangeForSessionToken(AuthSubUtil.java:309)
at com.google.gdata.client.http.AuthSubUtil.exchangeForSessionToken(AuthSubUtil.java:275)
代码没改过,证书也没变,Googling
http://www.google.com/support/forum/p/apps-apis/thread?tid=16306d02c282e8d3&hl=en
只要添加 URLDecoder.decode 就可以了
String token = request.getQueryString();
String oneTimeUseToken = AuthSubUtil.getTokenFromReply(token);
oneTimeUseToken = URLDecoder.decode(oneTimeUseToken, "UTF-8");
String sessionToken = AuthSubUtil.exchangeForSessionToken(oneTimeUseToken, privateKey);
参考
http://code.google.com/intl/fr/apis/gdata/docs/auth/authsub.html
http://code.google.com/intl/fr/apis/gdata/docs/auth/overview.html
分享到:
相关推荐
MongoDB 是一个流行的开源、高性能、无模式的文档型数据库,常用于构建分布式应用程序。...以下是详细的操作过程: 1. **安装 MongoDB** - 首先,通过 `curl` 命令下载 MongoDB 的 Linux 版本。例如,对于版本 2.6.3...
geoip2 MaxMind的GeoIP2 Precision Services的golang实现 例子 使用maxmind实时api执行地理位置查询的简单示例。 尽管City带有可选的context.Context参数,但如果您不想使用此参数,则可以传入nil。...
在生产环境中,出现“AuthenticationException: The remote cert is invalid according to the validation procedure”的错误,表明被访问服务的证书在验证过程中被认为是无效的。解决这个问题的方法是设置环境变量...
PushSharp是由冉启刚(Mike Kruger)开发的,它为开发者提供了一种简单的方式来集成推送通知服务,如Apple Push Notification service (APNs) 和 Google Cloud Messaging (GCM)。通过PushSharp,开发者可以方便地...
except paramiko.AuthenticationException: print("认证失败,请检查用户名和密码") except Exception as e: print(f"连接失败:{str(e)}") def run_command(ssh_client, command): stdin, stdout, stderr = ...
protected AuthenticationInfo doAuthenticate(AuthenticationToken token) throws AuthenticationException { // 获取登录类型 LoginType loginType = LoginType.valueOf(((CustomizedToken) token)....
项目中碰到的,已解决,写个文档记录一下
\Illuminate\Auth\AuthenticationException::class, \Symfony\Component\HttpKernel\Exception\HttpException::class, ]; /** * Report or log an exception. * * This is a great spot to send exceptions ...
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { //TODO 从令牌中获取userId,然后检测该账户是否被冻结。 SimpleAuthenticationInfo info ...
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // 从 token 获取用户名,然后从数据库查询用户信息 // ... } @Override protected ...
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // 这里进行用户登录验证 } @Override protected AuthorizationInfo ...
raise AuthenticationException('Invalid credentials') # 实现命令执行方法 def check_channel_request(self, kind, chanid): if kind == 'session': return paramiko.OPEN_SUCCEEDED return paramiko.OPEN_...
} catch (AuthenticationException e) { // 处理登录失败 } ``` 这个简单的实例主要展示了Shiro的基础用法,实际项目中,你可能还需要处理更多复杂情况,如记住我功能、密码策略、角色和权限的细粒度控制等。通过...
- **AuthenticationException**:在认证过程中抛出的异常,如UnknownAccountException(未知账户)、IncorrectCredentialsException(凭证错误)等。 4. **授权机制** - **AuthorizationInfo**:存储用户的权限...
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // 获取用户信息并验证 } @Override protected AuthorizationInfo ...
- 实际的密码匹配发生在 `assertCredentialsMatch` 函数中的 `doCredentialsMatch(token, info)`,匹配成功则返回 `true`,否则抛出 `AuthenticationException`。 6. **权限授权**: - 密码验证成功后,用户的...
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal(); String password = new String((char...
- 自定义异常类型和处理方式,例如定义自定义的`AuthenticationException`和`AccessDeniedException`,并配置对应的访问拒绝页面。 7. **记住我功能**: - `RememberMeServices`允许用户在一段时间内无须重新登录...
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // 从 token 获取用户名 String username = (String) token.getPrincipal(); // 从数据库...
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException { UsernamePasswordToken token = (UsernamePasswordToken) authcToken; User user = ...