问题描述
我有一个Firebase项目,可以在其中登录google。现在,我想在应用程序脚本中调用firebase API来创建Gmail插件。我可以使用UrlFetchApp.fetch调用在请求标头中不需要Id令牌的API,但我也想调用在请求标头中包含Id令牌的API。 我使用以下方法获取Firebase idToken,但出现以下错误
[20-09-18 23:15:57:291 PDT] {
"error": {
"code": 400,"message": "INVALID_IDP_RESPONSE : Invalid Idp Response: access_token audience is not for this project","errors": [
{
"message": "INVALID_IDP_RESPONSE : Invalid Idp Response: access_token audience is not for this project","domain": "global","reason": "invalid"
}
]
}
}
function getGoogleIDToken()
{
var firebaseConfig = {
apiKey: "",authDomain: "",databaseURL: "",projectId: "",storageBucket: "",messagingSenderId: "",appId: "",};
var res = UrlFetchApp.fetch('https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key='+firebaseConfig.apiKey,{
method: 'POST',payload: JSON.stringify({
requestUri: 'https://'+firebaseConfig.authDomain,postBody: 'access_token='+ScriptApp.getoAuthToken()+'&providerId=google.com',returnSecuretoken: true,returnIdpCredential: true
}),contentType: 'application/json',muteHttpExceptions: true
});
Logger.log(res);
var responseData = JSON.parse(res);
idToken = responseData.idToken;
Logger.log('Google ID Token: ');
Logger.log(idToken);
return idToken;
}
解决方法
-
确保firebase gcp和应用程序脚本gcp共享同一个Google云端项目