1

http://android-developers.blogspot.tw/2013/01/verifying-back-end-calls-from-android.html )を読んだ後、 Verifying Back-End Calls from Android Appshttp://android-developers.blogspot.tw)も読みました/2012/09/google-play-services-and-oauth-identity.html )、それは言うGoogle Play services and OAuth Identity Tools

「GoogleAuthUtil.getToken() を呼び出して、GET または POST の各セットの前にトークンを取得する必要があります。物事を適切にキャッシュすること、およびトークンの有効期限と更新を処理することが賢明です。」

文章を読んだ後、3つの質問があります。

  1. GoogleAuthUtil.getToken()GET や POST の各セットの前にトークンを取得するために呼び出す必要があるため、GoogleAuthUtil.getToken()スレッドセーフかどうかは疑問です。

バックグラウンドで定期的にサーバーと同期する必要があるシナリオを考えてみましょう。一連の HTTP 要求でサーバーに接続するたびにGoogleAuthUtil.getToken()、有効なトークンを使用して要求を送信できるように呼び出す必要があります。

一方、ユーザーがアプリを操作している場合は、同じことを行う必要がありGoogleAuthUtil.getToken()ます。トークンを取得するために呼び出し、一連の HTTP 要求と共にそれをサーバーに送信します。バックグラウンド同期の進行中にユーザーがアプリと対話する可能性があるためGoogleAuthUtil.getToken()、同時に 2 つの異なるスレッドで呼び出される可能性があります。したがって、 getToken() がスレッドセーフかどうかを知りたいです。

2.トークンの有効期限を取得してトークンをキャッシュできる方法はありますか? ドキュメントを確認しました(http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html)このような方法はありません。

3.返されたトークンを更新する必要がありGoogleAuthUtil.getToken() ますか? もしそうなら、そうする方法はありますか?GoogleAuthUtil.getToken()または、有効なトークンが必要になるたびに呼び出す必要がありますか?

4

1 に答える 1

0
  1. スレッドセーフ性については心配しません。スレッドの衝突の結果として何がうまくいかないのかを考えようとしていますが、何も思い浮かびません。

2 & 3. トークンの有効期限を確認する文書化された唯一の方法は、tokeninfo エンドポイントをヒットすることですが、この目的のために HTTP ラウンドトリップを追加する必要はないと思います。getToken() を呼び出し続けるのが賢明だと思います。そうすれば、返されるものが十分に長く有効であることを確認できます。必要に応じて更新されるため、更新する必要はありません。

于 2013-09-23T20:53:52.470 に答える