【发布时间】:2013-09-24 11:49:42
【问题描述】:
在我阅读了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() 以获取令牌;适当地缓存内容以及处理令牌到期和刷新是很聪明的。”
读完这句话,我有三个问题。
- 因为在每组GET或者POST之前需要调用
GoogleAuthUtil.getToken()来获取token,所以想知道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()?
【问题讨论】:
标签: android multithreading google-oauth google-play-services