是否有用于JavaScript的Firebase管理员SDK?

时间:2018-07-10 07:15:46

标签: javascript firebase

我正在使用Firebase,现在我正在Web中创建管理面板,管理员可以在其中从管理面板中删除,添加,修改用户。当我搜索时,我得到的是nodejs的sdk,而不是JavaScript的java。当我在JavaScript中尝试以下nodejs代码时,它给出了类似firebase.credential的错误消息

admin.initializeApp({
credential: admin.credential.cert({
projectId: '<PROJECT_ID>',
clientEmail: 'client email id',
privateKey: '-----BEGIN PRIVATE KEY-----\n<KEY>\n-----END PRIVATE     KEY-----\n'}),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});

3 个答案:

答案 0 :(得分:3)

没有Admin SDK不能专门用于服务器端,因为它可以无限制地访问您的Firebase项目。切勿将管理员凭据放在前端。

您可以使用firebase https函数来实现所需的功能。在firebase函数上创建一个api,并将检查放在函数内部,以检查用户是否有权删除/添加/修改用户。

这里有一些资源可以帮助您入门:

Firebase功能:https://firebase.google.com/docs/functions/

HTTP函数:https://firebase.google.com/docs/functions/http-events

管理SDK:https://firebase.google.com/docs/admin/setup

答案 1 :(得分:2)

  

“是否有用于JavaScript的firebase管理员sdk?”:

简短的回答:“是”

firebase的admin sdk目前仅适用于“ Node js”,但它使用javascript作为其语言。要对您的Firebase资源执行任何基于管理员的操作,请使用带有express的nodejs,它可以与Firebase托管一起很好地工作。

还可以查看 firebase功能https://firebase.google.com/docs/functions/

在这里您可以找到一些预定义功能的预制功能,因此您不必自己编写代码。

管理员SDK: https://firebase.google.com/docs/admin/setup

答案 2 :(得分:1)

有一种方法。如果查看https://github.com/firebase/firebase-admin-node的源代码,您会发现它们使用admin-service-account.json文件中的oauth2凭据并获得令牌。 每个api调用都使用此令牌进行请求。 我最近做了此操作,以便可以在Flutter应用程序中从前端发送通知。这是飞镖中的一些旧代码。但这就是流程。

var response = await 
http.post("https://accounts.google.com:443/o/oauth2/token",
  headers: {
   'Content-Type': 'application/x-www-form-urlencoded',
  },
  body: "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt- 
    bearer&assertion=jot"
  );
print("Response status: ${response.statusCode}");
print("Response body: ${response.body}");
var body = json.decode(response.body);
var token = body['access_token'];
print(token);
var response2 = await http.post("${Config.fcmUrl}/messages:send",
  headers: {
   "Content-Type": 'application/json',
   "Sdk-Version": 'Node/Admin/<XXX_SDK_VERSION_XXX>',
   'access_token_auth': 'true',
   "Authorization": "Bearer $token",
  },
  body: json.encode({
    "message": {
      "topic": "live",
        "notification": {
          "body": "This is a Firebase Cloud Messaging Topic Message!",
          "title": "FCM Message",
        },
      },
    },
  ));
print("Response status: ${response2.statusCode}");
print("Response body: ${response2.body}");