私はこの権利があることを確認する必要があります。 Actions-SDKを使ってGoogleにアクションを構築する認証については、Googleログインを使用して、エンドユーザーにとってすべてのことを比較的単純にしたいと考えています。私のフルフィルメントはFirebaseの機能の上にあります。私のOAUTHサーバーはFirebaseの外にあります。Googleでのアクション - UIDのログイントークンとスワップアクセストークン
私が注意する最初のことは、フロントエンドのログインの多くがJavaScriptで行われることです。
var provider = new firebase.auth.GoogleAuthProvider();ここから
、ユーザがログインする場合は、私たちが使用することができます。
firebase.auth().getRedirectResult().then(function(result) { }
と私たちはここに
私の最初の質問はセキュリティですresult.user.uidへのアクセス権を持っている - API Key
、DatabaseURL
とauthDomain
理由クライアントサイドのJavaScriptで公開され、Chromeでデベロッパーコンソールを使用すると、エンドユーザーはIDとトークンにアクセスできます。私は何かの理由でresult.user.De
の下でuidまたはidトークンを使用するかどうか疑問に思っていましたが、インターネット上のJWTデコーダを使用してすべての情報を簡単に抽出して、ここでuidを取るかもしれません。
Node.jsとPHPでデータベースの接続やトークンの検証やユーザーの作成ができるが、ログインできないような管理者側があるようだ。だからJavaScriptはやり方だと思う。
私が集めた次のステップは、oauthサーバーに自分のuidをポストバックして、誰がログインしているのかを知り、oauthアクセストークン/リフレッシュトークン/認証コードをuidに結びつけることです。 FirebaseやOauthサーバのMySQLデータベースにリンクを保存するかどうかは問題ではありません。
はその後Firebase機能で履行のために、我々はその後介して1人のuserIdを持っている:
let ActionsSdkApp = require('actions-on-google').ActionsSdkApp;
const app = new ActionsSdkApp({request: request, response: response});
app.getUser().userId);
しかし、これは、我々は結果から取得したUIDと一致していません...しかし、我々は、我々は上に生成AccessTokenへのアクセスを持っていますOauthサーバであるため、正しいUIDを得るためにアクセストークンを交換する必要があります.FirebaseやOAuth MySQLサーバを検索するかどうかは関係ありません。
これをまとめて、このフローはすべて正しいと思いますか?それとももっとうまくやれるの?私は、Firebaseの機能でユーザを識別する良い方法があることを期待していました。しかし、それは可能ではないようです。
ありがとうございました!それは私の頭の周りを包むために長い時間がかかりましたが、私はゆっくりとそこに着いています。したがって、user_idを使用する代わりに、私は代わりに、Postを使ってバックエンドのPHPスクリプトにidTokenを渡すことができます。このスクリプトは、JWT検証を行い、生成されたトークンとデコードされたユーザーIDを格納できます。 – Simon