私はGitHub認証プロバイダを使用して匿名ユーザーを常設ユーザーに変換する実装に取り組んでいます。firebaseのlinkWithPopup()がfirebaseのユーザ `photUrl`を設定しないのはなぜですか?
私のアプリでは、ユーザーは常に自動的に匿名ユーザーとして認証されます。次に、「GitHubでログイン」ボタンをクリックすると、基本的には、私のアプリはまずその匿名ユーザーをGitHubの資格情報(基本的には同時にサインイン)にリンクしようとしますが、リンクが失敗した場合ユーザーはすでに存在しています(例えば、以前にリンクされていた)場合、GitHubを使用して通常のサインインに戻ります。
firebaseのAPI linkWithPopup(provider)
とsignInWithPopup(provider)
を使用します。両方のメソッドは、認証されたGitHubユーザで解決する約束を返します。これは素晴らしいことです!しかし、linkWithPopup()
から取得したユーザオブジェクトにはphotoUrl
プロパティが設定されていないことが判明しました。それは常にnull
です。 IすぐsignInWithPopup()
が、でもリンクしようとせずに、私も約束はユーザーオブジェクトと、この1 で解決を取得
ははphotoUrl
セットを持っています。だから、linkWithPopUp()
にバグがあるようです。
これは既知の問題ですか、これが予期される動作ですか?
私のコードは次のようになります。
linkOrSignInWithGitHub(): Observable<User> {
let linkPromise = firebase.auth()
.currentUser
.linkWithPopup(new firebase.auth.GithubAuthProvider())
.then(result => result.user);
// If a user has been permanentely linked/authenticated already and tries
// to link again, firebase will throw an error. That's when we know that
// user credentials do already exist and we can simply sign in using GitHub.
return Observable.fromPromise(<Promise<any>>linkPromise).catch(error => this.signInWithGitHub());
}
そしてsignInWithGitHub()
次のようになります。
signInWithGitHub(): Observable<User> {
let loginPromise = firebase.auth()
.signInWithPopup(new firebase.auth.GithubAuthProvider())
.then(result => result.user);
return Observable.fromPromise(<Promise<any>>loginPromise);
}
だから、もう一度、自分自身のコードは完全に正常に動作し、それは私が取得しないだけということですユーザーphotoURL
の場合はlinkWithPopup()
です。