2016-12-29 9 views
5

をカスタムプロバイダをリンクするためにfirebaseにカスタム認証の資格を取得し、ユーザーが私firebaseアプリで

  • グーグル(Firebaseによってフェデレーションプロバイダー)または(custom Auth Providerとして実装)
  • スラックを使用してログインすることができます

私はユーザーに両方のアカウントをリンクする機会を与えたいと思います。だから私は開いて頂く場合は、次のとおりです。彼はスラックのいずれかでログインできるように、Googleの

  • を持つユーザーが
  • 「スラックと接続」設定とクリックに行くのユーザーアカウントで

    1. ユーザー兆候は、その後リンクする必要がありますまたはGoogleの次回のドキュメントを1として

    は、アカウントをリンクするために、あなたは電子メールプロバイダ(https://firebase.google.com/docs/auth/web/account-linking)のためにフェデレーションプロバイダーにとってlinkWithPopup/Redirectまたはauth.currentuser.link(credential)のいずれかを呼び出すことができます。

    私は今何とか私のカスタムスラック認証からAuthCredentialを取得して上記のlink(credential)メソッドを使用できるかどうか疑問に思っていますか?
    アカウントをカスタム認証プロバイダにリンクして管理した人は誰ですか?

  • 答えて

    4

    これは、サポートされていません。 何ができることは以下の通りですが(主に順序を切り替え、オーダーの微調整が必​​要):

    1. たるみを使用して認証カスタムでサイン:(カスタム認証アカウントにここで使用UIDは同じかもしれませんスラックユーザ識別子)。
    2. linkWithPopup/Redirect/Googleプロバイダまたはクレデンシャルを既存のスラックカスタムユーザーに使用する資格。

    あなたが提案した流れを主張する場合は、次の操作を行うことができます:最初にGoogle(UIDが割り当てられた)とで

    1. サイン。
    2. スラックでログインしてください(スラックOAuthの認証情報が取得されました)。
    3. バックエンドにFirebase IDトークンとスラッククレデンシャルを送信します。
    4. スラックIDを含むスラックユーザーデータを取得するために、スラックのuserinfoエンドポイントを照会するFirebase IDトークンを確認してください。
    5. スラック識別子をキーとしてFirebaseのuidを値として、firebase uidをキーとした別のハッシュマップと値としてのスラック識別子を保存します。
    6. fireトークンでカスタムトークンを作成し、スラックカスタム属性(スラック:{スラック識別子})を設定します。
    7. カスタムトークンをフロントエンドに送信し、signInWithCustomToken(トークンでスラック識別子を使用できるようになります)
    8. スラックアカウントは、既存のアカウントにリンクされるようになりました。

    ユーザーがスラックでログインし、次の時間:

    1. は、バックエンドにたるみのOAuth認証情報を送信します。
    2. slack identifierを取得するためにslack userinfoを照会します。
    3. 対応するfirebase uidにスラック識別子キーを使用してハッシュマップを確認します。
    4. カスタムトークンをfirebase uidでミントし、カスタム属性としてスラック識別子を追加します。
    5. クライアントのカスタムトークンでサインインします。

    ユーザーがGoogleにログインしている場合。

    1. バックエンドにfirebase IDトークンを送信します。
    2. IDトークンを検証し、firebase uidキーを使用してハッシュマップ内の対応するスラック識別子を検索します。
    3. カスタムアトリビュートとしてFirebaseのuidとslack identifierを持つMintカスタムトークン。
    4. クライアントのカスタムトークンでサインインします。
    関連する問題