2017-03-18 13 views
6

Google Cloud Endpointsバックエンドを使用してAndroidアプリを作成しています。Googleのサインインでバックエンドを制限したいと考えています。Google Cloud Endpointsバックエンドを使用するAndroidアプリにログイン

私はAndroid instructionsに従っており、正常にログインしました。つまり、私はトークンを受け取りました。そして、私はそれをサーバーに渡して、それが表すユーザーを確認できます。すばらしいです。

ただし、ここでは大きな画像がありません。質問:

  1. 各リクエストでこのトークンをサーバーに送り返し、リクエストごとに確認するプロセスを繰り返しますか?
  2. はいた場合、トークンは、いくつかのポイント(私は信じて1時間)で期限切れになります。私はユーザーが再びログインする必要はないと思いますが、これを避けるために離れているべきでしょうか?
  3. (私はGoogleのサインインもでのOAuth2だと思う)トークンをリフレッシュするための方法ですか?
  4. そして、最も重要なのは、このすべては、誰かが彼らのバックエンドを保護するために、Googleのサインインを使用する標準的な方法ですか?私はGoogleの製品だけを使用しているので、これは非常に簡単なプロセスであることを期待していました。しかし、私は自分自身がAndroidとCloud Enpointのドキュメントのページやページでパズルの一部を失っているのを発見しています。

何か助力や洞察がありがとうございます。

+0

、[はい、あなただけのバックエンド要求の許可としてクライアントライブラリが提供するIDトークンを使用し、トークンを毎回確認することができます。 https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInApi#silentSignIn(com.google)には、silentSignInを使用して新しいリクエスト(またはキャッシュされたトークン)を取得します。 .android.gms.common.api.GoogleApiClient) –

+0

通常、バックエンドシステムは他のタイプの認証(サイト独自のユーザー名/パスワードなど)をサポートし、Google Sign-Inユーザーとパスワードユーザーの両方に対して同じ種類のセッション管理を使用しますクッキーを作成し、それを認可として使用するか、リフレッシュおよびアクセストークンセッション管理を伴う適切なOAuthを実行する) –

答えて

1

私はAndroid認証を使用していませんが、Googleはすべての認証にouth2を使用しています。 Google SDKは、oauth2を使用することの苦痛を緩和するのに役立ちます。

  1. のご質問にお答えするには[はい - あなたはトークンベースの認証の世界であり、あなたはすべてのリクエストでトークンを送信します。
  2. はい。トークンは1時間後に失効します。 oauth2認証を最初に実行したときにこれを回避するには、更新トークンも取得します。ユーザーのトークンが期限切れになると、更新トークンを使用して新しいトークンを取得します。このリフレッシュトークンは、クライアント側に格納することができます。クライアントはリクエストの1つの間に、既存のトークンが期限切れであり、リフレッシュトークンを使用して新しいトークンを要求することがわかります
  3. 更新トークンを使用して新しいトークンを取得するには、GoogleリフレッシュトークンURLを使用します。私は下のgoogleの重要なoauth URLを与えました。
  4. これは私の友人を処理するのOAuth2確かです。

クラウドエンドポイントを使用しているため、認証エンドポイントを作成すると思われます。

サービスプロバイダ(などグーグル、フェイスブック、githubのを、)を使用してのOAuth2認証を行うときには、一般的に以下のエンドポイントを作る:

https://webiste.com/auth/signin/{provider} 
https://webiste.com/auth/callback/{provider} 
https://webiste.com/auth/refresh/{provider} 

後は、あなたが使用するのOAuth2のためのGoogleのURLです

oauth_url: 'https://accounts.google.com/o/oauth2/v2/auth', //start auth 
token_url: 'https://accounts.google.com/o/oauth2/token', //get id_token, access_token, refresh_token token 
refresh_token_url : 'https://www.googleapis.com/oauth2/v4/token', 
token_info_url: 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=', //validate token 

またhttps://developers.google.com/identity/protocols/OAuth2でGoogleののOAuth2のドキュメントを通過するとよいでしょう。あなたはGoogleだけサインインをサポートしている場合

0

私はあなたが認証のためのUIのAndroidライブラリをFirebaseべきだと思います。 Google、Facebook、Eメール、Twitter、Githubのサインインオプションを提供しています。コードのほんの数行を書くだけで良いのです。 詳細については、hereをクリックしてください。

0

これを行うには、3党コードを使用することをお勧めします。はるかに時間がかかり、バグがずっと少なくなり、後で他の方法に拡張するのが非常に簡単になります。 私はFirebaseを非常に簡単に、無料で、うまくいき、Googleが所有しているので、お勧めします。

関連する問題