适用于Android的Firebase Admin SDK,找不到方法

Rus*_*art 4 android firebase firebase-admin

我正在构建一个由Firebase应用支持的Android应用,我希望能够创建一个可以编辑或删除其他用户帐户的管理员帐户.如果我理解正确,Firebase Admin SDK应该允许我这样做.所以我按照这里的说明操作.

在我的应用中设置Admin SDK.我在build.app中添加了以下内容:

compile 'com.google.firebase:firebase-admin:4.1.1'
Run Code Online (Sandbox Code Playgroud)

在我的Application类中,我添加了这个:

FileInputStream serviceAccount = null;
try {
    serviceAccount = new FileInputStream("app/<MY-DATABASE>.json");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

if (serviceAccount != null) {
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
            .setDatabaseUrl("https://<MY-APP>.firebaseio.com/")
            .build();

    FirebaseApp.initializeApp(options);
}
Run Code Online (Sandbox Code Playgroud)

但是,它告诉我:

  • FirebaseOptions.Builder中没有名为setCredential()的方法
  • FirebaseApp.initializeApp()接受Context对象,而不是FirebaseOptions.

根据文档,FirebaseOptions.Builder.setCredential()是一种新方法,它取代了已弃用的方法FirebaseOptions.Builder.setServiceAccount().但setServiceAccount()也不存在.

这里发生了什么?

Dou*_*son 8

您不能在Firebase Android客户端库旁边的Android应用中使用Firebase Admin SDK.SDK都提供了具有完全相同的包和类名的类,因此它不可能同时使用它们(编译器如何知道您打算在应用程序中构建哪一个?).

例如,请查看Android客户端库中的FirebaseOptions Builder的javadoc:

com.google.firebase.FirebaseOptions.Builder

现在看一下java Admin SDK中的同一个类(注意URL不同):

com.google.firebase.FirebaseOptions.Builder

你可以亲眼看到它们是不同的东西,即使它们具有相同的名称.因此,您的编译器正在查看Android SDK定义,而不是管理SDK定义.

正如Frank所说,您可能不想在Android应用程序中使用Admin库.如果您想使用管理员SDK,请从您控制的服务器上使用它,并让Android应用程序与其进行通信(如果需要).