GoogleAuthUtil.getToken()线程安全吗?

时间:2013-09-23 12:58:50

标签: android multithreading google-oauth google-play-services

在我阅读Verifying Back-End Calls from Android Appshttp://android-developers.blogspot.tw/2013/01/verifying-back-end-calls-from-android.html)后,我还阅读了Google Play services and OAuth Identity Toolshttp://android-developers.blogspot.tw/2012/09/google-play-services-and-oauth-identity.html)并且说

“你应该在每组GET或POST之前调用GoogleAuthUtil.getToken()获取令牌;它适当地缓存事物,以及处理令牌到期和刷新。”

读完句子后,我有三个问题。

  1. 因为有必要在每组GET或POST之前调用GoogleAuthUtil.getToken()来获取令牌,所以我想知道GoogleAuthUtil.getToken()是否是线程安全的。
  2. 假设一个场景,我需要在后台定期与我的服务器同步。在每次使用一组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()吗?

1 个答案:

答案 0 :(得分:0)

  1. 我不担心线程安全问题。我试图想一想,由于线程冲突会出现什么问题,而且没有任何想法。
  2. 2& 3.找到令牌到期时间的唯一记录方法是点击tokeninfo端点,但我认为您不想为此目的添加HTTP往返。我认为聪明的事情只是继续调用getToken(),它会确保你得到的东西足够长久以至于有用。它会根据需要刷新,所以你不必这样做。