如何为 Firebase Dynamic Link Analytics Rest API (NodeJS) 获取正确的访问令牌
Posted
技术标签:
【中文标题】如何为 Firebase Dynamic Link Analytics Rest API (NodeJS) 获取正确的访问令牌【英文标题】:How to get the correct acces token for Firebase Dynamic Link Analytics Rest API (NodeJS) 【发布时间】:2017-10-18 13:07:41 【问题描述】:我的 access_token 有问题,我通过 serveracceskey 获得。这是我在 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 Doc。
【问题讨论】:
这是一个严重的错误,firebase 团队应该修复它。如果我们无法进行分析,Firebase 动态链接将毫无用处。与通常的缩短网址有什么区别? 【参考方案1】:Admin SDK 创建具有一组特定范围的令牌:https://github.com/firebase/firebase-admin-node/blob/master/src/auth/credential.ts#L272
显然,动态链接 API 需要令牌中的其他 OAuth2 范围。对于这个用例,你最好使用一些 OAuth2 库。如果您使用的是 Java 或 Python,Google Cloud 会为您提供处理此问题的库。
【讨论】:
感谢您的回复。正如你提到的 access_token 需要范围,我放了其中一个,但我仍然得到同样的错误。我读了很多文档。(firebase.google.com/docs/reference/dynamic-links/analytics)。我需要知道哪个范围最适合提供分析响应。 我们打开了内部问题以改进示例代码/文档。 我知道,但我找不到此问题的组件,我无法创建问题,对于 Firebase 组件,我没有创建问题的权限。【参考方案2】:我与一位乐于助人的 GitHub 用户一起解决了这个问题。如果有人遇到同样的问题,请点击此链接它会有所帮助。 https://github.com/firebase/firebase-admin-node/issues/111
【讨论】:
以上是关于如何为 Firebase Dynamic Link Analytics Rest API (NodeJS) 获取正确的访问令牌的主要内容,如果未能解决你的问题,请参考以下文章