1

クライアントがGithubでサインインするとき、私はGithubからユーザーのプロファイルデータを取得し、それをリアルタイムデータベースの/users/{uid}/profileに保存するクラウド機能をトリガーしたいと思います。ユーザーがサインアップしたときにFirebaseのクラウド機能でアクセストークンを取得する方法は?

新しいユーザーがサインアップし使用したとき、私は私のクラウド機能を起動することができます

exports.fetchProfile = functions.auth.user().onCreate(event => { 
    // user = event.data 
    // uid = user.uid 
    // access_token = ??? 

    // todo: request user profile from Github using access_token 
    // todo: save profile in /users/{uid}/profile 
}); 

をしかし、どのように私は得るかGithubのプロファイル要求を行うために必要なユーザーのaccess_token?ありがとう。私が試してみました何

:クライアントで

  1. は、Githubのaccess_tokenを取得するためにFirebaseAuthを使用しています。
  2. (1)のaccess_tokenを使用して、Fireベースcredentialを作成します。
  3. (2)のcredentialでログインすると、成功コールバックにFIRUserが表示されます。これからuidを取得できます。
  4. {uid: access_token}をリアルタイムデータベースのキューに書き込むと、プロファイル検索を実行するクラウド機能がトリガーされます。

これらはすべてユーザーのaccess_tokenを取得するために役立ちますか?

答えて

0

ユーザー作成トリガーでは実行できません。 あなたは複数のオプションがあります。

  1. サインアップした後、クライアントからのアクセストークンを取得し、指定したユーザがアクセスできる場所の下にリアルタイムのデータベースに保存されました。その場所にクラウド機能データベースのトリガを設定することができます。それが起動されると、アクセストークンが取得され、GitHubへのAPI呼び出しが行われ、データが取得され、必要な処理が実行されます。

  2. すべてをクライアント側で実行します。クライアント(ブラウザ)でサインアップした後にアクセストークンがあるので、GitHubへのAPI呼び出しを行い、プロファイルデータをユーザーがアクセスできるデータベースの場所に保存します。追加の管理操作を実行する必要がある場合は、クラウド機能を追加して、その場所への変更をトリガすることができます。

さて、Firebase Auth(4.0.0)は追加のユーザーデータを返します。チェック:https://firebase.google.com/docs/reference/js/firebase.auth#.UserCredential 追加データを取得するには、result.additionalUserInfo.profile、またはGitHub username:result.additionalUserInfo.usernameを呼び出します。

+1

ありがとう@bojeil、私は既にオプション1を使用しています。オプション2は異なるクライアント(Web、iOS、Android)でコードの重複を招くため、おそらくそれに固執します。しかし、私はユーザー作成トリガからaccess_tokenを取得することができればいいですね。 – eyeezzi

関連する問題