Node.js googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken返回凭证\u不匹配
最终目标:使用本地节点创建Firebase自定义令牌,将此类自定义令牌发布到googleapis/../verifyCustomToken,并获取一个idToken,允许我将新文档发布到Firestore,如中所述 当前成就:我可以使用此云功能成功创建一个Custon令牌,并成功执行后续步骤(从googleapis/获取一个idToken/../verifyCustomToken并成功将文档发布到Firestore)。但我需要从本地服务器获得同样的功能(这次我们不打算使用云功能) 当前问题:当我尝试将本地NodeJ生成的自定义令牌发布到googleapis/../verifyCustomToken:Node.js googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken返回凭证\u不匹配,node.js,firebase,google-cloud-firestore,google-api,Node.js,Firebase,Google Cloud Firestore,Google Api,最终目标:使用本地节点创建Firebase自定义令牌,将此类自定义令牌发布到googleapis/../verifyCustomToken,并获取一个idToken,允许我将新文档发布到Firestore,如中所述 当前成就:我可以使用此云功能成功创建一个Custon令牌,并成功执行后续步骤(从googleapis/获取一个idToken/../verifyCustomToken并成功将文档发布到Firestore)。但我需要从本地服务器获得同样的功能(这次我们不打算使用云功能) 当前问题:当我
{
"error": {
"code": 400,
"message": "CREDENTIAL_MISMATCH",
"errors": [
{
"message": "CREDENTIAL_MISMATCH",
"domain": "global",
"reason": "invalid"
}
]
}
}
以下是整个NodeJs服务器:
const admin = require('firebase-admin');
exports.serviceAccount = {
"type": "service_account",
"project_id": "angular-firebase-auth0-3c084",
"private_key_id": "6ba2ba41e0bf3837841aa9772c7d880b7ce3be81",
"private_key": "-----BEGIN PRIVATE KEY-----\nMI... 9fYKA=\n-----END PRIVATE KEY-----\n".replace(/\\n/g, '\n'),
"client_email": "firebase-adminsdk-lu97a@angular-firebase-auth0-3c084.iam.gserviceaccount.com",
"client_id": "114324662014690107039",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-lu97a%40angular-firebase-auth0-3c084.iam.gserviceaccount.com"
}
admin.initializeApp({
credential: admin.credential.cert(exports.serviceAccount)
});
var uid = "NSBFu2YJNDgLQJCZ99dRJlP4DRo2"; //copied from https://console.firebase.google.com/project/firetestjimis/authentication/users
var claim = {
control: true
};
admin.auth().createCustomToken(uid)
.then(function (customToken) {
console.log(customToken)
})
.catch(function (error) {
console.log("Error creating custom token:", error);
});
我复制打印的令牌并尝试:
curl --location --request POST 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=AIzaSyDAd03oo5fPgV2l--oMWZ2Y23DCGihK3xs' \
--header 'Content-Type: application/json' \
--data-raw '{"token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJodHRwczovL2lkZW50aXR5dG9vbGtpdC5nb29nbGVhcGlzLmNvbS9nb29nbGUuaWRlbnRpdHkuaWRlbnRpdHl0b29sa2l0LnYxLklkZW50aXR5VG9vbGtpdCIsImlhdCI6MTU4NzQ4NjI0NiwiZXhwIjoxNTg3NDg5ODQ2LCJpc3MiOiJmaXJlYmFzZS1hZG1pbnNkay1sdTk3YUBhbmd1bGFyLWZpcmViYXNlLWF1dGgwLTNjMDg0LmlhbS5nc2VydmljZWFjY291bnQuY29tIiwic3ViIjoiZmlyZWJhc2UtYWRtaW5zZGstbHU5N2FAYW5ndWxhci1maXJlYmFzZS1hdXRoMC0zYzA4NC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsInVpZCI6Ik5TQkZ1MllKTkRnTFFKQ1o5OWRSSmxQNERSbzIifQ.fSe8ONIHBgoeVg4OkTSemykq4RoFb5TOiHOq52zKiiXCfywmdGAtqZyAWfM_dz-knP4mbSyJM9N3T2A_GQ0fV6AGTlq3lalDaptQPfYX4B7MOiA6YODJSDXGyGVHbdF88MmtNzESszbivF7RoFTBanyawVa9dwy83-84_2nJHylqmq055oFurd-WkM-gnfjyRBvGzQmZp7l76dV1rzRiKg8_ctiO8SOwD84KriXQj6DL-LFze7wb6XJSCJ52epXH0FvjALsB4R1eqCDHAJ3COfEYWiE0Vn5LWhj6yFvtSG3vqLqXy79EDkoXVPw0IJNiBSE4e3gfmat12M9peJEoTw","returnSecureToken":true}'
然后导致凭证不匹配
如果它是相关的,如果我从这个云功能生成了自定义令牌,我可以成功地发布到verifyCustomToken
import * as functions from 'firebase-functions';
import * as admin from "firebase-admin";
export const getCustomToken = functions.https.onRequest((request, response) => {
if (admin.apps.length < 1) { //Checks if app already initialized
admin.initializeApp();
}
const uid = "NSBFu2YJNDgLQJCZ99dRJlP4DRo2";
admin.auth().createCustomToken(uid)
.then(function (customToken) {
console.log(customToken.toString);
response.send(customToken);
})
.catch(function (error) {
console.log("Error creating custom token:", error);
});
});
import*作为“firebase函数”中的函数;
从“firebase管理员”导入*作为管理员;
export const getCustomToken=functions.https.onRequest((请求,响应)=>{
if(admin.apps.length<1){//检查应用程序是否已初始化
admin.initializeApp();
}
const uid=“NSBFu2YJNDgLQJCZ99dRJlP4DRo2”;
admin.auth().createCustomToken(uid)
.then(函数(customToken){
console.log(customToken.toString);
发送(customToken);
})
.catch(函数(错误){
log(“创建自定义令牌时出错:”,错误);
});
});
确保URL中发送的API密钥与用于生成自定义令牌的服务帐户来自同一项目。确保URL中发送的API密钥与用于生成自定义令牌的服务帐户来自同一项目。看起来URL中传递的API密钥不是来自该项目angular-firebase-auth0-3c084
@HiranyaJayathilaka,你完全正确。谢谢如果你将你的评论设置为答案,我会选择上传,就像URL中传递的API密钥不是来自项目angular-firebase-auth0-3c084
@HiranyaJayathilaka,你完全正确。谢谢如果你把你的评论设为答案,我会把它捡起来