Android版Firebase和新版Google登录

Bog*_* M. 16 authentication android firebase

我正在尝试添加对作为Play服务8.3.0的一部分宣布的新Google登录的支持.我成功配置了项目,并且我从GoogleApiClient获取了一个令牌,但Firebase Invalid Credentials error 在调用时 返回了一个令牌 ref.authWithOAuthToken("google", token)

Google+登录正在运行,但这需要单独的许可,这对于Marshmallow开发来说是一种痛苦. Firebase安卓教程有一个Google+登录示例,我的感觉是他们还没有支持新的Google登录.

有没有人尝试过与Firebase相关的新Google登录并让它发挥作用?

Fra*_*len 28

这是向Android添加登录使用Google for REST API授权的步骤的混合.

一旦你有一个GoogleSignInResult你可以从该帐户名称,然后请求令牌的最小范围:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        GoogleSignInAccount acct = result.getSignInAccount();

        String email = acct.getEmail();

        // TODO: run an async task to get an OAuth2 token for the account
    }
}
Run Code Online (Sandbox Code Playgroud)

异步任务需要请求这些范围:

protected String doInBackground(String... params) {
    String scopes = "oauth2:profile email";
    String token = GoogleAuthUtil.getToken(getApplicationContext(), email, scopes);
    // exception handling removed for brevity
    return token;
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以像往常一样使用令牌登录Firebase:

ref.authWithOAuthToken("google", token, new Firebase.AuthResultHandler() {...
Run Code Online (Sandbox Code Playgroud)

  • 现在不推荐使用`accountName`的`getToken`.还有其他方法吗? (4认同)
  • 感谢您解决这个问题!我创建了一个拉取请求来更新 Firebase 登录演示以在没有 Google+ 的情况下工作:https://github.com/firebase/firebase-login-demo-android/pull/21 (2认同)