gpt4 book ai didi

android - 如何处理用户在上一次运行时使用 Firebase 登录的应用程序的冷启动

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:36 28 4
gpt4 key购买 nike

感谢 Firebase,用户可以在 G+、Facebook 或 Twitter 的帮助下登录。当它们被记录时,一切都很好。

当 Android 应用程序关闭并重新打开时,如何使用 Firebase API 重新启用先前成功登录的用户。应用程序演示或文档中均未对其进行解释。

以Facebook为例,sdk似乎保存了token,这就是按钮处于连接状态的原因(表明您可以断开连接)。但是 Firebase 和其他身份验证系统呢?

最佳答案

感谢@Frank-van-Puffelen 的回答,我进行了一些试验,直到我得到相关的东西(至少对我而言:欢迎发表评论以改进)。

我将我的 OAuth 架构分为 3 个主要组件:fdsfds

  1. 位于应用程序中的一个 AuthStateListener。
  2. 一个处理所有身份验证过程的 Utils Singleton OAuthManager
  3. 处理身份验证用户交互(登录按钮等)的一个或多个 Activity

应用类

FacebookSdk.sdkInitialize(this);

Firebase.setAndroidContext(this);
Firebase.getDefaultConfig().setLogLevel(Logger.Level.DEBUG);
Firebase.getDefaultConfig().setPersistenceEnabled(true);

Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.addAuthStateListener(new Firebase.AuthStateListener() {
@Override
public void onAuthStateChanged(AuthData authData) {
if (authData != null) {
// user is logged in
// create a partialUser from authData
OAuthManager.getDefault().setAuthenticatedUser(authData);
// fetch, merge and save back the partialUser with server registerUser.
OAuthManager.getDefault().startFetchingUserInfo();
} else {
// user is not logged in
// Try to retrieve the user from Facebook SDK
// Try to retrieve the user from "Token and Id save in Android Preferences (in case of issue, or cache reset from Firebase))
// In retrieve is not possible, clean auth data
OAuthManager.getDefault().retrieveOAuth(MilleZimU.getInstance());
}
}
});

OAuthManager

这是处理身份验证的每个服务(部分已从 Firebase 专用演示 Activity 中复制)

登录 Activity

这里只保留处理UI交互的部分。

检索?

我不确定这是必要的,但具体情况(可能是由于应用程序崩溃或更新),身份验证状态与 Firebase|Prefs|FacebookSdk 不同。我会看到时间。

关于android - 如何处理用户在上一次运行时使用 Firebase 登录的应用程序的冷启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904910/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com