我通过 serveracceskey 获得的 access_token 有问题。这是我在 NodeJS 中的代码:
const admin = require('firebase-admin');
var request = require("request");
const serviceAccount = require('./serverAccountKey.json');
const credential = admin.credential.cert(serviceAccount);
credential.getAccessToken().then((accessTokenInfo) => {
const accessToken = accessTokenInfo.access_token;
const expirationTime = accessTokenInfo.expires_in;
console.log("accessToken " + accessToken );
console.log("expirationTime " +expirationTime);
var s = "Bearer " + accessToken;
request({
headers:{
'Authorization': s
},
uri:"https://firebasedynamiclinks.googleapis.com/v1/SHORTLINK/linkStats?durationDays=7",
method: "GET",
}, function(error, response, body) {
console.log(body);
});
});
结果如下:
{
"error": {
"code": 403,
"message": "Request had insufficient authentication scopes.",
"status": "PERMISSION_DENIED"
}
}
我究竟做错了什么 ?我也在 Postman 中测试了链接。出了点问题,我阅读了所有 firebase Rest API 文档。
Admin SDK 创建具有一组特定范围的令牌:https://github.com/firebase/firebase-admin-node/blob/master/src/auth/credential.ts#L272 https://github.com/firebase/firebase-admin-node/blob/master/src/auth/credential.ts#L272
显然,动态链接 API 需要令牌中包含额外的 OAuth2 范围。对于此用例,您最好使用一些 OAuth2 库。如果您使用的是 Java 或 Python,Google Cloud 会提供可以为您处理此问题的库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)