如何获取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