我有一个 Firebase WebApp,它为用户提供信息。除了应用程序之外,我还需要通过 Firebase Cloud Messaging 向使用 Android 应用程序的用户发送推送通知。
目标:用户应该有一次登录应用程序的权限,该应用程序既可以注册他们的通知,又可以通过 WebView 加载 WebApp。
问题:我找不到一种方法可以通过单次登录来实现这一点。在每种情况下,我都需要为本机应用程序登录一次,然后通过 webView 再次登录。
首先,为其他可能正在解决问题的人提供一些参考:
Firebase 身份验证用户界面:https ://firebase.google.com/docs/auth/android/firebaseui
Firebase 数据库:https ://firebase.google.com/docs/database/android/read-and-write
Firebase 云消息传递:https ://firebase.google.com/docs/cloud-messaging/android/topic-messaging
背景:我能够使用 Firebase Auth UI 分别处理每个身份验证以本地处理通知身份验证,然后通过 firebase 服务器处理 webView 身份验证。这有效,但用户体验很差。由于本机身份验证已经提供了一个令牌,因此我应该能够跳过第二阶段并直接让用户登录。这是我尝试过的方法:
第一种方法:
本机登录,然后是 webapp 登录(工作但需要两次登录):按照 Firebase Auth UI 教程,我可以成功登录:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
Run Code Online (Sandbox Code Playgroud)
'user' 不为空,可用于从 firebase 数据库读取数据。然后使用主题 ID 订阅每个 FCM 文档的主题。
订阅通知后,我们然后使用以下行建立与 webapp 的连接:
myWebView.loadUrl("https://someproject.appspot.com/index.html");
Run Code Online (Sandbox Code Playgroud)
第二种方法:
使用 myWebView.loadUrl() 传递用户令牌(授权被拒绝)...基于此信息:https ://firebase.google.com/docs/cloud-messaging/auth-server
类似的东西,我希望:
...
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
//get …Run Code Online (Sandbox Code Playgroud) android android-webview firebase firebase-authentication firebase-cloud-messaging
我对构建本机和基于 WebView 的 Android 屏幕感兴趣。我希望在从本机屏幕导航到 WebView 屏幕时保持用户登录状态。但我不知道如何实现这一目标。