在我阅读Verifying Back-End Calls from Android Apps
(http://android-developers.blogspot.tw/2013/01/verifying-back-end-calls-from-android.html)后,我还阅读了Google Play services and OAuth Identity Tools
(http://android-developers.blogspot.tw/2012/09/google-play-services-and-oauth-identity.html)并且说
“你应该在每组GET或POST之前调用GoogleAuthUtil.getToken()获取令牌;它适当地缓存事物,以及处理令牌到期和刷新。”
读完句子后,我有三个问题。
GoogleAuthUtil.getToken()
来获取令牌,所以我想知道GoogleAuthUtil.getToken()
是否是线程安全的。 假设一个场景,我需要在后台定期与我的服务器同步。在每次使用一组HTTP请求与我的服务器联系之前,我需要调用GoogleAuthUtil.getToken()
,以便可以使用有效令牌发送请求。
另一方面,当用户与我的应用程序进行交互时,我还需要做同样的事情:调用GoogleAuthUtil.getToken()
获取令牌并将其与一组HTTP请求一起发送到我的服务器。由于用户可以在后台同步进行时与应用程序进行交互,因此可以在两个不同的线程中同时调用GoogleAuthUtil.getToken()
。因此,我想知道getToken()是否是线程安全的。
2.有没有办法可以获得令牌到期时间,以便我可以缓存令牌?我检查了文档(http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html),没有这样的方法。
3.我应该刷新GoogleAuthUtil.getToken()
返回的令牌吗?如果是,有没有办法这样做?或者,每当需要有效令牌时,我应该拨打GoogleAuthUtil.getToken()
吗?
答案 0 :(得分:0)
2& 3.找到令牌到期时间的唯一记录方法是点击tokeninfo端点,但我认为您不想为此目的添加HTTP往返。我认为聪明的事情只是继续调用getToken(),它会确保你得到的东西足够长久以至于有用。它会根据需要刷新,所以你不必这样做。