使用 Android AccountManager 的 Firebase 身份验证

Firebase authentication using Android AccountManager

我想使用 Firebase 构建一个 Android 应用程序。 Firebase 为登录屏幕提供演示代码 https://github.com/firebase/firebase-login-demo-android .

但是我希望用户能够使用用户已经在 Android 的集中式帐户管理器中输入的帐户信息,而不是让用户输入他们的帐户信息.

我在 https://developer.android.com/reference/android/accounts/AccountManager.html and the Firebase android authentication guide at https://www.firebase.com/docs/android/guide/user-auth.html 看过 AccountManager 对象的文档,但我太菜鸟了,不知道如何将它们放在一起。

任何 advice/pointers/sample 代码将不胜感激。或者让我知道我是否找错树了。

这里是 Firebase 工程师,

这是一种完全合法的方式——过去有很多人选择集成它。

简短的回答是它需要两个步骤:

  • 从 AccountManager 获取所需供应商的适当 credential/token
  • 使用 credential/token 进行 Firebase 身份验证。

看起来像 this is a good resource for the first step (learning about AccountManager). Then in the doCoolAuthenticatedStuff() you would follow our typical auth flow:

Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.authWithOAuthToken("google", "<OAuth Token>", new Firebase.AuthResultHandler() {
    @Override
    public void onAuthenticated(AuthData authData) {
        // the Google user is now authenticated with your Firebase app
    }
    @Override
    public void onAuthenticationError(FirebaseError firebaseError) {
        // there was an error
    }
});

对于 Google,我们使用 'email' 范围,但每个提供商都会有所不同。

我在 iOS 世界中有一个 example of something similar(使用 ACAccountStore 登录 Twitter,这与 Android AccountManager 非常相似),如果流程有帮助的话。

虽然这听起来不错 recipe/gist,所以我会看看我能做些什么!