Google 登录不适用于客户端 ID

Google sign in doesn't work with client id

我正在为我的公司开发一个应用程序。它必须具有 Google 登录功能。但是,公司使用 Firebase 帐户仅用于推送通知和 crashlytics,并使用单独的 Google Cloud Platform 帐户用于 Google 登录。该帐户有一个 OAuth 客户端注册为 Android(SHA1 和包名称正确)。问题是当我尝试将 requestIdToken(here_is_my_client_id) 添加到 GoogleSignInOptions 时,我只在登录对话框消失后收到代码 10 的错误。没有客户端 id 一切正常,但对我来说必须使用它。如果有任何帮助,我将不胜感激!

嗯,您需要创建两个 OAuth 2.0。第一个(OAuth 2.0 类型 = Android)使用 SHA-1 证书连接 android 项目,第二个(OAuth 2.0 类型 = Web 应用程序)获取 IdToken授权码.

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestScopes(new Scope(Scopes.DRIVE_APPFOLDER))
            .requestIdToken(getString(R.string.server_client_id)) // Web application client_id
            .requestServerAuthCode(getString(R.string.server_client_id)) // Web application client_id
            .requestEmail()
            .build();

经过一番研究,我发现您必须将 Web 项目的 Google 客户端 ID 传递给 requestIdToken。我之前一直在传递 Android 项目的 ID(来自 Google Cloud Platform)。