これは、相互認証を許可する唯一のものであると私が信じているGoogle Plus Login Flowを使用して機能するため、スコープはGoogle Plus Loginです。
「www[ドット]googleapis[ドット]com/auth/plus.login」
ここで何が起こっているかというと、chrome.identity.getAuthToken() から取得した access_token とともに、google をプロバイダーとして指定する authwihtoauthtoken を使用したリクエストで、firebase に送信する拡張機能から access_token を取得します!
https://www.firebase.com/docs/web/api/firebase/authwithoauthtoken.html
実際には、このアクセス トークンは他のアプリから発行される可能性があるため、それが有効であり、アプリに対して発行されていることを確認する必要があります。基本的に、アクセスしようとしている中間者がいないことを知る必要があります。私たちのデータベース。
この検証は、firebase によって行われています。
このトークンが、トークンが発行されたのと同じアプリケーションに属しているかどうかを確認します。
そのため、Google 開発者コンソールで、拡張機能と同じアプリケーションの下に別の資格情報セットを作成する必要があります。基本的には、Web ページに対して行う場合と同じことを行いますが、この新しい資格情報セットを Firebase の google oAuth のセキュリティ セクションに挿入します。
彼らはそこで私たちのためにこのチェックを行います. トークンが同じアプリに発行されているかどうか、Google で確認します。
それでおしまい。
背景情報。
https://developers.google.com/identity/protocols/OAuth2UserAgent#validatetoken
使用事例
認証が必要なリクエストで ID トークンを送信する。たとえば、サーバーにデータを渡す必要があり、特定のデータが特定のユーザーからのものであることを確認したい場合です。
アクセスを確認するタイミング
すべてのトークンは、Google から直接送信されたものであることがわかっている場合を除き、サーバー上で確認する必要があります。クライアント アプリから受け取るトークンはすべて検証する必要があります。
Google には、次の場所にある python でこれを行う方法のチュートリアルがあります。
"github[dot]com/googleplus/gplus-verifytoken-python"
つまり、基本的にここで起こっていることは次のとおりです。サーバーから検証する代わりに、firebase に CLIENT_ID と APP_SECRET を入力して Google 認証を有効にすると、firebase がこの検証を行います。
これを正しく行う方法は、client_secret が発行された相手を確認する組み合わせまたは同じスタイルです。Chrome は access_token を提供し、この access_token は firebase のバックエンドでチェックされます。