匿名ユーザーでfirebase認証を使用しています。ユーザーがサイトにサインアップすると、その資格情報がリンクされます。Firebase認証EmailAuthProvider:期限切れのトークンで匿名ユーザーと信用証明書のリンクが失敗する
//Create the email and password credential, to upgrade the anonymous user.
let credential = firebase.auth.EmailAuthProvider.credential(email, visitorId);
//Link the credential to the currently signed in user (the anonymous user).
auth.currentUser.link(credential).then((user) => {
console.log("anonymous visitor successfully upgraded");
},
(error) => {
//error upgrading the anonymouse user
console.log("Error upgrading anonymous visitor", error);
});
Here is documentation of this approach
これは今日まで素晴らしい仕事をしています。ここ
はコードです。今私は突然、エラーコード:auth/network-request-failedを受け取りました。私はバイオリン弾きで失敗した要求を検査した場合
は、私がの応答を見つける:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "TOKEN_EXPIRED"
}
],
"code": 400,
"message": "TOKEN_EXPIRED"
}
}
奇妙なことは、私はリクエストに応じてトークンをデコードした場合、有効期限が中に入ることです将来(トークンのデフォルトの時間長である約1時間先)。私はトークンを生成する時間と、それをユーザーにリンクしようとする時間との間にほとんど遅延がありません。だからなぜ失敗?
私の研究:
The issue here sounds similar, but I has not resolved it for me.
詳しい情報は役に立つことができます。私は推測しかできない。匿名ユーザーが無効になったり削除されたり、同じアカウントでパスワード/電子メールが更新されたりしました。これは、通常、バックエンドによってTOKEN_EXPIREDエラーがスローされたときです。あなたは次のことをしていますか? – bojeil
両方のアカウントでいいえ。ここに私がやっていることがあります: –
両方のアカウントでいいえ。訪問時に最初に行うことは、ユーザーに匿名で署名することです。これは機能します。 userIdがコンソールに出力され、同じuserIdが認証ダッシュボードに表示されていることがわかります。次のステップでは、ユーザー名のユーザー入力を受け入れると(私はここで一意性が保証されます。以前は同じ電子メールが使用されていないことを保証します)、資格情報を取得して匿名ユーザーとリンクしようとします。これは "auth/network-request-failed"エラーで失敗します。また、同じことが異なるネットワーク、ブラウザ、およびデバイスで発生することにも言及する必要があります。 –