如何在Firebase 3.0中的应用程序之间共享身份验证令牌?

Tie*_*Van 5 firebase firebase-authentication firebase-realtime-database

在旧版本的Firebase中,我们可以获取经过身份验证的令牌,以便在我们的应用扩展程序之间进

但是当升级到Firebase 3.0时,该功能不再起作用.我使用了getTokenWithCompletion:在FIRUser上,然后在我的App扩展中,我调用signInWithCustomToken:completion:使用我刚获得的令牌.但是Firebase会在回复时返回错误:

错误域= FIRAuthErrorDomain代码= 17000"自定义令牌格式不正确.请查看文档." UserInfo = 0x799b6010 {error_name = ERROR_INVALID_CUSTOM_TOKEN,NSLocalizedDescription =自定义标记格式不正确.请查看文档.}

如何从FIRUser获取身份验证令牌以在我的App扩展中重新验证它?

小智 2

今天早上我在 Android 上升级到最新版本的 Firebase 时遇到了同样的问题。为了解决这个问题,我必须将 Firebase Server SDK 更新到版本 3.0+

这是一个 Java 后端实现,但这同样适用于 NodeJS。

<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-server-sdk</artifactId>
  <version>[3.0.0,)</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在新的 Firebase Server SDK 中,您必须首先使用生成的 JSON 文件初始化 Firebase 应用程序。(在新的 Firebase 控制台的权限下找到)然后您可以生成 JWT 令牌。

FirebaseOptions options = new FirebaseOptions.Builder()
                .setServiceAccount(new FileInputStream("path/to/json/file.json"))
                .setDatabaseUrl("https://myapp.firebaseio.com/")
                .build();

FirebaseApp.initializeApp(options);

String token = FirebaseAuth.getInstance().createCustomToken("userID");
Run Code Online (Sandbox Code Playgroud)

以这种方式生成的令牌允许我使用新的signInWithCustomToken()方法。

您可以在这里阅读更多信息: https: //firebase.google.com/docs/auth/server

希望这可以帮助