サーバベースでfirebase-admin
を使用している間に、ユーザデータをfirebase認証から取得する必要があります。 しかし、私はfirebaseが提供するjwtトークンを使用すると、 デコードトークンから電子メールや他のプロバイダのデータを取得できないことがわかりました。 (適切なスコープを正しく追加していることを確認してください)`getUser`を呼び出している間にfirebase-admin認証エラーが起きましたが、verifyTokenを呼び出すときに正常に動作します
firebaseの認証からユーザーデータを取得するためにfirebase admin apiを使用しました。
次のようなコードを見て:その後、私はエラーを得た
import * as admin from 'firebase-admin'
const auth = admin.auth()
auth.verifyIdToken(idToken)
.then(decodedToken => decodedToken.user_id)
.then(uid => {
auth.getUser(user_id)
.then((userRecord) => {
console.log("Successfully fetched user data:", userRecord.json();
})
.catch(function(error) {
console.log("Error fetching user data:", error);
});
})
:
Error fetching user data: Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
at Error (native)
at Sign.sign (crypto.js:283:26)
at Object.sign (~/app/node_modules/jwa/index.js:55:45)
at Object.jwsSign [as sign] (~/app/node_modules/jws/lib/sign-stream.js:23:24)
at Object.module.exports [as sign] (~/app/node_modules/firebase-admin/node_modules/jsonwebtoken/sign.js:144:16)
at CertCredential.createAuthJwt_ (~/app/node_modules/firebase-admin/lib/auth/credential.js:190:20)
at CertCredential.getAccessToken (~/app/node_modules/firebase-admin/lib/auth/credential.js:162:26)
at SignedApiRequestHandler.sendRequest (~/app/node_modules/firebase-admin/lib/utils/api-request.js:110:32)
at ~/app/node_modules/firebase-admin/lib/auth/auth-api-request.js:381:50
at process._tickDomainCallback (internal/process/next_tick.js:129:7)
これは、アクセス権のエラーかもしれないが、この推測によると、私はこれがあるかもしれない を見つけましたstackoverflowでこの問題に関連する:
Firebase admin().auth().getUser(uid) Error: An internal error has occurred 'auth/internal-error' でもadminクライアントのIAMをrole:editorに変更しても、 このエラーはまだ発生しています。 何が起きているのか、 、なぜadminがトークンを確認できるのですが、私のプロジェクトにサービスアカウントのルートアクセス権を与えても、ユーザーデータを読み込む権限を与えることができます。
私にはどんな提案も役に立ちます。
あなたが提供したコードサンプルには、再現が困難な一連の構文とコードエラーがあります。たとえば、initializeApp()を呼び出すことはありません。また、未定義の 'idtoken'と' user_id'変数も使用します。最後に、最初の 'console.log()'行に閉じ括弧がありません。私たちがこれをデバッグするのを助けるためにあなたは完全なreproをまとめてください。最も簡単に問題を解決する方法については、下記の私の回答を参照してください。それでも問題が解決しない場合は、新しいエラー処理が含まれている最新バージョンのSDK(4.0.6)にアップグレードしてください。また、無効なキーファイルがどこにあるかを知ることは素晴らしいことです。 – jwngr