如何获取Firebasedynamic链接分析Rest API的正确访问令牌(NodeJS)
我用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" } }
我究竟做错了什么 ? 我也testing邮差的链接。 有些东西是错的,我读了所有的firebase Rest API Doc。
Admin SDK使用一组特定的范围创build令牌: https : //github.com/firebase/firebase-admin-node/blob/master/src/auth/credential.ts#L272
显然,dynamic链接API在令牌中需要额外的OAuth2范围。 这个用例最好使用一些OAuth2库。 如果您使用的是Java或Python,Google Cloud会为您提供相应的库。
我用一个有用的GitHub用户解决了这个问题。 如果有人得到同样的问题,请按此链接将有所帮助。 https://github.com/firebase/firebase-admin-node/issues/111
- 如何获取Firebase云服务器中的服务器时间戳记?
- 从TypeScript Firebase Admin SDK初始化失败
- Firebase RangeError:检索数据时string的长度无效
- Firebase Node.JS Admin SDK发送validation邮件
- 有没有办法通过我的Node.js服务器发送带有Firebase Admin SDK的validation邮件?
- 使用Firebase进行NodeJS身份validation
- Firebasepipe理员身份validation令牌被吊销
- 通过电子邮件创build的Firebase-Admin用户显示为匿名
- admin.database不是一个函数