如何为Firebase动态链接分析Rest API(NodeJS)获取正确的访问令牌

问题描述:

我遇到了使用serveracceskey获取的access_token的问题。这是我在代码的NodeJS:如何为Firebase动态链接分析Rest API(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" 
    } 
} 

我在做什么错?我也测试邮差的链接。有些事情是错误的,我读了所有的Firebase Rest API Doc。

+0

这是至关重要的错误,firebase团队应该解决这个问题。如果我们无法进行分析,Firebase动态链接将毫无用处。与通常的缩短网址有什么不同? – faruk

联系SDK使用一组特定范围的创建令牌:https://github.com/firebase/firebase-admin-node/blob/master/src/auth/credential.ts#L272

显然,动态链接API需要在令牌额外的OAuth2范围。这个用例最好使用一些OAuth2库。如果您使用的是Java或Python,Google Cloud会为您提供处理此问题的库。

+0

感谢您的回复。正如你所提到的access_token需要的范围,我把它们之一,但我仍然得到同样的错误。我阅读了很多文档(https://firebase.google.com/docs/reference/dynamic-links/analytics)。我需要知道哪个范围是完美的分析响应。 –

+0

我们打开内部问题来改进示例代码/文档。 –

+0

我知道但我找不到此问题的组件,我无法创建问题和Firebase组件,但我没有创建问题的权限。 –

我用一个有用的GitHub用户解决了这个问题。如果有人得到同样的问题,请按此链接将有所帮助。 https://github.com/firebase/firebase-admin-node/issues/111