当前位置: 首页 > 知识库问答 >
问题:

Google登录失败com.Google.android.gms.common.api.apiException:10:

壤驷子安
2023-03-14

所以我被这个令人沮丧的问题困住了。我对Firebase上的Google身份验证还很陌生,但我已经做了Firebase文档中关于如何集成Google登录身份验证的所有说明,然而我仍然在控制台中收到这个奇怪的错误,包括两个部分:

12-03 11:07:40.090 2574-3478/com.google.android.gms E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE

而且还

Google sign in failed com.google.android.gms.common.api.ApiException: 10:

在有人试图指出以前就堆栈溢出提出的类似问题之前,以下是我在看到所有可用的解决方案之后所做的,但non已经解决了该错误

  • 我有我的项目的SHA1指纹
  • 我有我的OAUTH2.0客户端ID,android客户端ID和web客户端,并且在requestIdToken()中放入了web客户端ID。
  • 我没有在google play Store上发布我的项目的APK。这意味着我没有意外生成另一个SHA1指纹。
  • 我已经在Auth firebase文档中一步一步地执行了Google签名。

下面是我的代码片段:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);
    ButterKnife.bind(this);

    String webClientId = getString(R.string.web_client_id);


    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestIdToken(webClientId)
            .build();

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);


    GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);


    googleLoginBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent signInIntent = mGoogleSignInClient.getSignInIntent();
            startActivityForResult(signInIntent, RC_SIGN_IN);
        }
    });

}



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

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        // The Task returned from this call is always completed, no need to attach
        // a listener.
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);

        try{

            GoogleSignInAccount account = task.getResult(ApiException.class);
            firebaseAuthWithGoogle(account);

        } catch (ApiException e) {
            // Google Sign In failed, update UI appropriately
            Log.w(TAG, "Google sign in failed", e);
            // [START_EXCLUDE]
            Toast.makeText(this, "Gooogle Auth failed", Toast.LENGTH_LONG);
            // [END_EXCLUDE]
        }

    }
}



private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
    Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
    // [START_EXCLUDE silent]
    //showProgressDialog();
    // [END_EXCLUDE]

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        Toast.makeText(LoginActivity.this, "Successful Auth", Toast.LENGTH_LONG).show();
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                        Toast.makeText(LoginActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        //updateUI(null);
                    }

                    // [START_EXCLUDE]
                    //hideProgressDialog();
                    // [END_EXCLUDE]
                }
            });
}

共有2个答案

权玉泽
2023-03-14

在使用Google Play和Firebase的App Signing时,需要将App Signing证书的SHA-1指纹(在Google Play控制台/发布管理/App Signing证书上找到)添加到Firebase控制台/设置/SHA证书指纹中

SHA的更新位置:Google Play Console>Release>Setup>App Integrity

卞经业
2023-03-14

基本上,问题是在sha1键放在控制台,请重新生成它,并再次正确地放同一个项目。

1)作为答案,请确保您实际签署的AndroidAPK具有与您在Firebase项目的Android integration部分(您可以下载google-services.json的页面)的控制台中指定的相同的SHA1指纹

有关更多信息,请参见:为Flutter应用程序生成SHA-1

2)在上面,转到你的firebase项目的设置(gear图标右转到概览的左上角区域。然后切换到帐户链接选项卡。在该选项卡上,将Google Play链接到您的项目。

编辑:帐户链接选项卡不再存在,取而代之的是:

  1. 登录到FireBase。
  2. 单击“设置”图标,然后选择“项目设置”。
  3. 单击“集成”选项卡。
  4. 在Google Play card上,单击链接
 类似资料:
  • 我已经搜索了整个互联网,尝试了所有可能的解决方案,但我仍然无法从我的flutter应用程序中使用GoogleSignIn登录。 我尝试过的事情: 1。添加SHA-1证书 2.添加SHA-256证书 3.填充的O-Auth屏幕 4.在Firebase中启用GoogleSignIn 5.添加支持电子邮件 当前仅在调试模式下进行测试。由于该应用程序目前处于初始阶段,我还不想构建发布版本。使用调试SHA-

  • 我的用户在下载我的应用程序后无法使用google sign in登录。起初我认为是sha1的问题,所以我用keytool和我的keystore创建了一个。 我做了什么: 将sha1复制到我的Firebase项目设置 下载了googlejson文件,放在我的项目中。 使用相同的密钥库生成签名的apk。 目前,我想我的Firebase项目设置,调试和发布版本中列出了两个sha1指纹证书。奇怪的是我可以

  • 问题内容: 我无法摆脱这个错误。我已经通过SSMS添加了“ NT AUTHORITY \ NETWORK”用户以及使用此线程作为参考的相关角色:用户“ NT AUTHORITY \ NETWORKSERVICE”的登录失败 我试图通过Windows服务建立数据库连接。在调试模式下,数据库连接可以正常工作。当我实际尝试运行已安装的服务时,便会出现此错误。 这是我来自app.config的连接字符串:

  • 所以阅读Sybase的实用手册,我发现我可以设置我的 localhost服务器使用dsedit.exe.。 然后我尝试在Aqua Data Studio中注册我的localhost服务器,方法如下: 但是我得到了以下错误: 管理员用户名是什么 我在哪里/如何设置它?? 根据文档,它说默认的系统管理员ID是“sa”,没有密码。。 (http://infocenter.sybase.com/archi

  • result.issuccess()的结果是:false。 完成的功能是: 失败时的结果是: > RE生成SHA1指纹图谱。-Firebase给我的信息是我的sh1指纹是256指纹。我还生成了释放密钥和调试密钥。 我将新文件google-services.json放入Android Studio的应用程序目录中。 我试图在物理手机上运行该应用程序,但错误与在虚拟手机上运行相同。 将包名比较到文件A

  • 一、检查服务器是否填写了DNS,即服务器是否能上网访问www.phpcms.cn。有部分用户是本机通信失败,检查C:\WINDOWS\system32\drivers\etc\hosts文件,如果用的是localhost域名访问,本机是否绑定了127.0.0.1 localhost 二、检查phpsso的访问地址是否正确,然后查看设置->phpsso设置中的应用id、接口地址、加密密钥、版本号和