documentationによると、電話認証以外のすべてのプロバイダの値が表示されます。ユーザーがPhone AuthenticationとFacebookの両方で認証されているかどうかをデータベースで確認したいauth.provider === 'facebook'
というルールを書きますが、auth.provider === 'phone'
というルールはありません。論理的には、もし最初のものがうまくいけば、2番目のものはうまくいかないでしょうが、私はいつも電話資格でサインインし、初めてFacebookの資格情報を電話の資格情報とリンクしたと言いますか?一言で言えば、ファイアベースデータベースの電話認証とFacebook用のauth.providerの値
- 電話認証の値は
auth.provider
ですか?はいの場合、それは何ですか? - ユーザーがデータベースにプロバイダとしてFacebookとPhoneの両方を持っているかどうかを確認する方法はありますか?ユーザーがどちらかでサインインしても気にしません。私が欲しいのは、ユーザーが自分のFacebookの資格情報を電話にリンクしておく必要があることだけです。
auth.provider
はサインインに使用したプロバイダの値しか与えないと仮定すると、Facebookでユーザーにサインインして電話資格情報としかリンクしていないとき、auth.provider === 'facebook'
はなぜ動作しますか?
更新:いくつかの試行錯誤で
- は、電話認証が使用される唯一の方法である場合、
auth.provider
が実際anonymous
、ないphone
ようです。 - また、bojeil'sの回答によれば、
auth.token.firebase.identities["phone"] !=null
はtrue
であることが判明した。注目すべき点は、ではなく、documentationに記載されているであることです。ドキュメントからの引用:
firebase.identities:このユーザーのアカウントに関連付けられているすべてのアイデンティティの辞書。辞書のキーは、次のいずれかになります。メール、google.com、facebook.com、github.com、twitter.com。
もここには記載されていません。ページが更新された最後の日は5月17日、2017でした。その電話帳認証のサポートを含むJavascript用Firebase SDK(v4.0.0)がその日にリリースされたことを考えると、ドキュメント内の厄介さのレベルを想像するだけです(release notes参照)。
ちょっとMayankは 'auth.provider'の代わりに' auth.token.firebase.sign_in_provider === 'phone' 'を使ってみてください。 'auth.provider'が実装されていないことを報告し、トークンデータが最新でないことに関するドキュメントを報告します。 – bojeil
'auth.token.firebase.sign_in_provider === 'phone''が動作します。また、 'auth.provider === 'anonymous''が動作します。バグと思われます。 –
私はこれに関するバグレポートを提出しました。 auth.providerの使用=== 'anonymous'は間違っています。実際の匿名ユーザーは、その小切手を渡します。後者が修正されるまで、以前の小切手を使用する必要があります。 – bojeil