是否可以在没有用户交互的情况下创建令牌生存期或更新令牌?
GoogleSignInResult result
GoogleSignInAccount acct = result.getSignInAccount();
email = acct.getEmail();
idToken = acct.getIdToken();
这段代码给了我一个生命周期为 1 小时的令牌。强制更新令牌的最佳方法是什么?
是的,现在,谷歌发行了 1 小时长的 id 令牌。如果要使用 ID 令牌作为会话管理的身份断言,则只需使用 silentSignIn (Javadoc),它不涉及任何用户交互。如果你的旧令牌还没有过期,你将得到(缓存的)版本(返回的可选待定结果将有isDone()==true);如果它已经过期,您将获得一个刷新的(但它需要更长的时间,因此 OptionalPendingResult isDone() 将为 false)。
此外,具体取决于是在 UI 线程上调用静默登录还是在工作线程上调用静默登录。如果你在工作线程上调用它,看看这篇文章 blockingConnect() + await() 它大大简化了代码:静默登录以使用 GoogleApiClient 检索令牌