使用node.js admin sdk创建令牌时,Firebase REST验证

前端之家收集整理的这篇文章主要介绍了使用node.js admin sdk创建令牌时,Firebase REST验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道这个问题在这里被问了很多,但我似乎无法找到可以解决我问题的确切答案.

我希望通过添加access_token参数来使用REST调用访问Firebase.

使用Node.js Admin SDK创建access_token,使用以下代码

var admin = require("firebase-admin");

var serviceAccount = require("./pk.json");

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),databaseURL: "https://XXX.firebaseio.com"
});

var uid = "1234";


admin.auth().createCustomToken(uid)
  .then(function(customToken) {
    // Send token back to client
    console.log("Token: "+customToken);
  })
  .catch(function(error) {
    console.log("Error creating custom token:",error);
  });

问题是,如果我从Node.js创建令牌并将其用于我的REST调用,则会收到未经授权的请求错误.

我已经读过一些问题,人们在发布令牌时添加了范围参数,但是没有找到使用Node.js Admin SDK的方法.

谷歌的文档并没有详细解释这个问题.知道我可能尝试解决这个问题吗?

解决方法

您用于向Firebase REST API进行身份验证的令牌不是正确的令牌类型.您正在使用Firebase Auth自定义令牌,该令牌只能用于通过signInWithCustomToken()方法对其中一个Firebase客户端SDK进行身份验证,如 Sign in using custom tokens on clients中所述.

要对Firebase REST API进行身份验证,您有两种选择:Firebase ID令牌(用于基于用户的访问)或Google OAuth2访问令牌(用于管理员访问).

使用Firebase ID令牌进行身份验证

有关如何在各种Firebase客户端SDK中检索访问令牌的说明,请参阅Retrieve ID tokens on the client.您还可以通过未记录的REST API为ID令牌交换Firebase自定义令牌并刷新令牌对:

端点:https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=\u0026lt;API_KEY\u0026gt;

方法:POST

请求正文:{“token”:< CUSTOM_TOKEN>,“returnSecureToken”:true}

< API_KEY>与您在Firebase客户端中使用的Firebase控制台获得的API密钥相同. < CUSTOM_TOKEN>是Firebase自定义令牌.

由于ID令牌在一小时后过期,您将需要使用刷新令牌通过其他未记录的REST API刷新它们:

端点:https://securetoken.googleapis.com/v1/token?key =< APPI_KEY>

方法:POST

请求正文:{“refresh_token”:< REFRESH_TOKEN>,“grant_type”:“refresh_token”}

< API_KEY>是与以前相同的API密钥. < REFRESH_TOKEN>是来自先前API调用的刷新令牌.

获得ID令牌后,可以通过auth query参数将其传递给REST API以验证请求.该请求尊重Firebase安全规则,就像登录客户端的最终用户发出请求一样.

使用Google Access令牌进行身份验证

要使用Google OAuth2访问令牌进行身份验证,您需要做的第一件事就是获取一个.有关如何执行此操作的说明,请参阅Retrieving an access token.它目前只包含一个Java示例,但这可以用于许多语言,包括Node.js.获得ID令牌后,可以通过access_token查询参数将其传递给REST API以验证请求.该请求将通过管理员访问权限进行,覆盖所有Firebase安全规则并授予完整的读写访问权限.

原文链接:https://www.f2er.com/nodejs/241093.html

猜你在找的Node.js相关文章