新的Google登录Android


78

我正在尝试使用新的Google Play服务8.3获取用户令牌ID,并且如记录所示,我通过了服务器ID:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
    .requestIdToken(getString(R.string.server_client_id))
    .requestEmail()
    .build();

但是我仍然无法获得成功的结果,如下所示:

{statusCode=unknown status code: 12501, resolution=null}

并记录在这里 GoogleSignInStatusCodes

用户已取消登录。也就是说,用户取消了某些登录解决方案,例如帐户选择或OAuth同意。

常数:12501

事实并非如此,因为我已经选择了一个帐户。知道是什么原因吗?


请注意,尝试处理已取消登录对话框(resultCode == Activity.RESULT_CANCELED)的结果时,将返回相同的状态代码(12501 )。使用GMS 8.4.0。
Eugen Pechanec '16

最后,我把它挣扎了将近一个星期后为我工作:stackoverflow.com/questions/33583326/new-google-sign-in-android/...
硕士

1
请注意,相同的代码12501可能是出于更琐碎的原因(即缺乏Internet连接)而出现的。
ris8_allo_zen0

@ ris8_allo_zen0我也因缺乏互联网连接而收到了12501
Arun,

Answers:


112

我有完全相同的问题,我已经找到了解决方案。

如果您遵循此处找到的文档:https : //developers.google.com/identity/sign-in/android/start-integrating

第一步是告诉您创建配置文件(该文件会为您创建一个OAuth 2.0客户端ID并将其插入google-services.json)

然后稍后,它再次说明创建OAuth 2.0客户端ID,但是这次它说明您必须对Web应用程序执行此操作

这是令人困惑的部分!(至少对我而言),因为我只是采用为Android OAuth创建的客户端ID,而不是为Web应用程序创建新的ID(我认为文档只是多余的东西)

就像说的那样,这就是您必须用作方法requestIdTokenrequestServerAuthCode的参数的那个。

不用在这种方法中使用Android OAuth ID,因为那样您将始终获得丑陋的状态码响应12501。

我认为主要的问题是文档对此有些混乱。也许是因为您必须创建两个OAuth ID有点奇怪。

因此,作为摘要,您需要两个OAuth ID,一个用于Android,一个用于Web应用程序,并且必须将每个OAuth ID设置在正确的位置。


2
这应该是正确的答案,省了我半天的时间。
Abedfar,2015年

你真的帮了我 这是正确的答案!
Markus

绝对应该更多地投票,拯救了我的一天。谢谢您的帮助!
加布里埃尔·法尔科内

7
@Kaizie当您说“并且您必须将每一个都设置在正确的位置”时,您究竟是什么意思?我终于不在任何地方使用Android Client ID。
josealfonsomora

6
@josealfonsomora Android客户端密钥将放在google-services.json中,并且需要在requestIdToken或requestServerAuthCode方法中设置网络应用程序密钥。
Kaizie '16

19

我为此苦苦挣扎,浪费了几乎一个星期的时间。

这就是我的工作方式。

  1. 在AndroidStudio中导入项目
  2. 为项目创建调试密钥库。
  3. 使用调试密钥库为项目创建SHA1签名。
  4. 使用SHA1签名,在Google Developer Console上注册您的应用以进行Google登录。
  5. 在那里生成一个Google配置文件。(放入Android Studio的app文件夹中)
  6. 在Android项目中使用OAuth 2.0凭据中的Web客户端ID。
  7. 现在,从Android Studio生成项目的调试版本(APK)。
  8. 将设备安装到系统中->复制此签名的APK调试版本并安装。

最后三个步骤6、7和8是您真正需要照顾的。如果您直接运行该项目,则APK实际上并未使用调试密钥库进行签名,而Google根本无法识别它。


1
您能否解释一下第5页(放入Android Studio的应用文件夹中)是哪一个?
Aleksey Timoshchenko '16

在这种情况下,ypu的想法可能是一个原因:我已经在一台笔记本电脑上为Google控制台生成了SHA1密钥,然后在另一台笔记本电脑上的Android Studio中生成了debag APK。这意味着Studio正在使用其他笔记本电脑上的SHA1建立进程APK。但据我所知,APK和SHA1都没有注册Google Matche SHA1,这是不是?
Aleksey Timoshchenko '16

1
无论您使用的是哪个系统,都应创建一个debug.keystore密钥,然后每次都使用它来对apk进行签名。只需签名即可。
大师

1
@Master:谢谢,曼。我正在使用USB安装apk。那是我的问题。立即修复。谢谢。
Pawan

我很早以前有这个。这次我很快就知道了。切换我的开发机器后,这是缺少的SHA1哈希。
cybergen '18

17

我遇到了同样的问题,在研究解决方案后,它恢复为server_client_id包含一些不正确的值,或者您的google_services.json没有在您的密钥库中注册的client_id中包含oauth_client。

requestIdToken(getString(R.string.server_client_id))

R.string.server_client_idWeb应用程序使用OAuth 2.0客户端ID 。并在google_services.json中使用Android的OAuth客户端ID

通常我们使用2个密钥库,1个使用调试密钥库,1个使用签名密钥库进行发布。因此,如果我们需要调试和发布模式,请两次注册Android的OAuth客户端ID,其中1次使用调试密钥库中的SHA1,另一次使用已签名密钥库中的1种进行发布。

我的google_services.json中的小例子

  "oauth_client": [
    {
      "client_id": "xxx-client-id.com",
      "client_type": 1,
      "android_info": {
        "package_name": "com.app.android",
        "certificate_hash": "xxxhash"
      }
    },
    {
      "client_id": "yyy.client-id.com",
      "client_type": 1,
      "android_info": {
        "package_name": "com.app.android",
        "certificate_hash": "yyyhash"
      }
    }
  ],

确保您的包名称与AndroidManifest.xml中的名称完全匹配!这让我很头疼。
jameswoo

如果您在发布签名的apk后将其删除,它将破坏开发。您将如何继续开发您的应用程序?
克里斯·哈里森

@ChrisHarrison是的,您是对的。我正在更新答案。
RaditzLawliet

15

我遇到了同样的问题,这是因为我创建了应用程序类型为Android的客户端ID

相反,我删除了它并创建了Web应用程序类型的客户端ID,并且摆脱了这个问题。


1
就我而言。
Roon13年

您能否精确知道在哪个屏幕上找到该视图?
丹妮·波普

不知道为什么这比选择Android更有效,但对我也是如此。@DanyPoplawec,这是在开发人员控制台,给定项目的API管理器中,单击左侧菜单上的凭据,然后单击“创建凭据”按钮并选择OAuth客户端ID,您应该看到此页面。
mkimmet

8

只需弄清楚如何解决此问题...尝试运行我的应用程序的调试版本时遇到此错误...要解决此问题,请在开发人员控制台以及google-services上为您的调试应用程序添加凭据.json。

这为我解决了!


您能否提供有关如何执行此操作的详细信息?这也可能是我的问题。
JDenais

1
@JDenais,转到Google开发人员控制台> Api Manager>凭据,使用用于生成调试版本(可能是计算机上的debug.keystore)的签名证书以及应用程序的degub软件包名称创建Auth 2.0 Android凭据..之后,将此客户端ID添加到google-services.json中,如下所示:“ oauth_client”:[{“:” XXXX“,” client_type“:1,” android_info“:{” package_name“:” com .fleeber“,certificate_hash”:“ YYYYYYY”}},{“ client_id”:“ XXX”,client_type“:1,” android_info“:{” package_name“:” com.fleeber.debug“,” certificate_hash“:” YYYY “}}]
拉蒙·卡纳莱斯

我以前有一个可以使用Google登录功能的应用程序,但是我创建的第二个应用程序配置不正确,原因是我同时使用两个帐户登录了Google。我必须完全注销,然后再次通过向导,添加我的调试证书指纹,然后JSON才能正确生成。
布朗·戴维斯

哇,经过5个多小时的在线搜索,您从字面上帮助了我。非常感谢!
奥卡米耶

8

我遇到了同样的问题,并通过以下解决方案解决了:

  1. 按照此处所述创建配置文件(google-services.json),并将其放置在/ app项目目录中
  2. (如其他答案中所述)使用Web应用程序客户端ID作为requestIdToken方法。
  3. [我的主要问题]如果您使用以下调试模式,请对您的应用进行签名:
 signingConfigs {
    release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
    }
 }

 buildTypes {
     release {
         ...
     }
     debug {
         ...
         signingConfig signingConfigs.release
     }
 }

4

现在我明白了。

因此,首先您必须遵循上面的答案:

  1. 在Google Developers Console中为Web应用程序创建OAuth客户端ID并在其中使用requestIdToken() (摆脱状态代码12501)
  2. 如果您为生产哈希键创建了Android OAuth客户端ID,请为调试哈希键创建一个新的Android OAuth客户端ID并将其集成到google-services.json中。(摆脱状态代码12500)

不再有效, 而且来这里的最后部分:3.不能调用requestIdToken()requestEmail()一次。至少就我而言Result: Status{statusCode=INTERNAL_ERROR, resolution=null},删除删除了requestEmail()

祝你好运...


2
您的第3部分中的内容肯定是错误的。requestIdToken()requestEmail()可以立即使用。我在我的应用程序中成功使用了它。
kirtan403 '16

然后我们的项目之间必须有另一个区别。因为在我的项目中,它的工作方式完全如上所述。
cybergen '16

我同意,我同时使用requestIdToken(),并requestEmail()在一次。没问题。
乍得宾厄姆

一个库版本可能有问题。它消失了。
cybergen

3

就我而言,我还必须检查是否已将调试SHA-1添加为有效的OAuth Android客户端。


2
12501始终是配置错误。伴随您在此处提到的情况,无效的服务器客户端ID或程序包名称不匹配也会导致此情况。
山姆·斯特恩

3

使用Web应用程序作为server_client_id而不是Android应用程序


2

我遇到了同样的问题,并且当我server_client_id包含一些不正确的值时,我注意到返回了12501代码。

由于没有详细的消息,并且此错误代码的文档相当糟糕,我不知道您的问题是否与我的原因相同。


我的应用程序基于此示例中的Android代码(IdTokenActivity类)。为了使其正常工作,我还需要将Google登录功能集成到我的应用中:

  • 启用Google登录后生成的json配置文件
  • 在我的gradle文件中添加了Google插件和相关性
  • 为此应用创建了OAuth客户端ID并将其保存在我的项目中 server_client_id

2
我认为servier_id不正确。我尝试了不同的方法。
贾马尔(Jamal)2015年

2

您的APK是否处于调试模式?我认为它仅适用于签名的apk。



2

我遇到的一个问题是,我使用不正确的别名生成了SHA-1。别名必须为androiddebugkey。因此,我将Android OAuth ID放在了google-service.json文件中。我已将Web客户端ID放入requestIdToken()。在我的特定情况下,我使用androiddebugkey生成了SHA-1别名。

google-services.json

"oauth_client": [
    {
      "client_id": "ANDROID OAUTH ID-.....apps.googleusercontent.com",
      "client_type": 1,
      "android_info": {
        "package_name": "br.com.packagename",
        "certificate_hash": "SHA-1 HASH"
      }
    },{
      "client_id": "WEB CLIEND ID......apps.googleusercontent.com",
      "client_type": 3
    }
 ]

签名部分:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken("WEB CLIEND ID......apps.googleusercontent.com")
                .requestEmail() 
                .build(); 

谢啦。我迷路了,直到我明白我必须使用androiddebugkey而不是自定义调试键
itzhar

2

代替R.string.server_client_id,只用R.string.default_web_client_id

当您将google-services.json文件复制到应用中时,它会自动创建此字符串值。您无需将密钥从google-services.json复制到string.xml。它对我有用。


2

我通过单击Android Studio中的Firebase支持来解决此问题,这可能与非Firebase用户无关。

  1. 转到菜单工具-> Firebase
  2. 单击将您的应用程序连接到Firebase,一旦连接成功,它将显示为绿色。
  3. 单击“将Firebase身份验证添加到您的应用程序”按钮,该按钮也会变为绿色。

注意:在此有大量答案肯定可以确认一件事。Google需要更新文档并确保其安全可靠。


1

如果以上选项均无效,请检查应用程序build.gradle中的applicationId是否与包名称相同。


1

以前,首先请检查您的release sha1键是否正确。但是,如果仍然无法正常工作,而您使用的是Google Play服务8.4.0(即,编译“ com.google.android.gms:play-services:8.4.0”),则可以通过修改GoogleSignInOption对象来解决此问题。代替:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail()  
       .requestIdToken("YOUR_WEB_API_ID.apps.googleusercontent.com")
                    .build();

您必须使用:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestScopes(new Scope(Scopes.PLUS_LOGIN))
                .requestScopes(new Scope(Scopes.PLUS_ME))
                .requestEmail()
                .build();

这解决了返回statusCode = INTERNAL_ERROR或statusCode = Error 12501或statusCode = Error 12500的错误。然后,可以使用此gso对象创建GoogleApiClient,如下所示:

 mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API,gso)
               // .addApi(Plus.API, null)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
               // .addScope(Plus.SCOPE_PLUS_LOGIN)
                .build(); 

1

不知道为什么,但是android studio中的SHA1自动更改了,这就是为什么我收到此错误。为了解决这个问题,我使用Android Studio的新SHA1更新了我的Firebase项目设置的SHA1,并且它再次开始工作。


1
我使用的是Firebase,所以在那里更新了SHA1,但有人使用Google控制台,然后需要相应地更新。
Rahul Sonone

我更换了工作用笔记本电脑,无法弄清楚为什么Google登录不再对我有用。然后,我想起我的新笔记本电脑必须具有不同的SHA-1指纹,并且必须将其添加到Google Developer Console中。
mco

所以现在您的问题已解决
Rahul Sonone

1

就我而言,我Client ID for AndroidGoogle API控制台上的凭据仅包含我的经发布签名的APK的SHA-1 。Android Studio使用默认的调试密钥库对我的调试版本进行签名,在这种情况下,调试密钥库SHA-1与在线的Android客户端SHA-1匹配。我的解决方案是简单地使用发布密钥库对调试版本进行签名。

在Android Studio中Build/Edit Build Types...,然后选择调试构建类型,并确保将“签名配置”设置为您的发行证书。

签名配置设置为释放


非常感谢您这一刻的时刻。\\\,(-.-)>>> ///(-.-)–
马修·韦伯

我应该提到我实际上得到了一个不同的错误代码。我得到了10个DEVELOPER_ERROR,但这是问题所在。
马修·韦伯

1

如果您使用调试密钥库来构建项目,则需要在Firebase Console上添加debug.keystore的SHA-1指纹。

  1. Firebase控制台上,打开您的项目
  2. 转到参数。常规标签
  3. 在此页的最后,有一个字段可添加指纹SHA-1
  4. 将SHA-1粘贴在控制台字段中。

要获取debug.keystore的SHA-1:

Mac / Linux:

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Windows:

 keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

https://developers.google.com/android/guides/client-auth

就这样 !


1

我遇到了相同的问题和错误12501,以上都不对我有用

我的问题是我使用为我生成的Google默认网络API。创建我自己的网络api后,错误消失并且工作正常!

这些是工作步骤:

  1. 首先,我创建了SHA1调试密钥,并将其添加到Firebase控制台。从这里创建SHA1 。
  2. 此处创建Web API和android OAuth 2.0客户端ID
  3. google-service.jsonFirebase生成控制台并放入app文件夹。
  4. 将此代码用于 GoogleSignnOption

像这样:

gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestIdToken
                ("put the web app client Id that get from the link in developer console ")
                .requestEmail().build();

提示1:我发现您应该同时创建android和网络应用的客户端ID。

提示2:如果您像我一样来自伊朗,您可以从google获取用户,但您不能这样做AuthWithGoogle,结果将fail存在auth.signInWithCredential(credential),您必须使用一些代理来返回true。

这是github中FireBaseAuthDemo的完整工作源代码:

在此处输入图片说明

希望对大家有帮助


您是否使用了与自动创建的Web应用程序中设置的重定向Uri相同的重定向Uri?我也遇到了这个问题,这让我发疯了!
约翰·麦克

身份验证客户端中“ client_type”的值应该是什么?您已经声明了“ client_type”:1和“ client_type”:3。这表示什么?
rajat44

@JohnMc我将整个测试应用程序放在这里github.com/mahdit83/FireBaseAuthDemo
Mahdi

@ rajat44该文件是从Google控制台自动生成的,真的不知道Google如何处理该文件。但这是使它起作用的方法。
Mahdi

0

在按照Google关于自动签名您的应用的说明进行操作后,我也遇到了这个问题。如果使用此方法对应用程序进行签名,则需要在API凭据中包括生成的密钥库指纹。

在项目浏览器上,右键单击您的应用程序,然后选择“打开模块设置”。

打开模块设置的屏幕截图  应用|  签名|  配置

我发现将.jks文件放在项目/app目录中比较容易混淆。无论如何,在其上运行此行。

keytool -list -v -keystore /home/user/keystores/android.jks

系统将提示您输入密码。不知道它的Key PasswordStore Password因为因为我是一样的。:|

控制台将吐出一堆证书指纹。使用SHA1,然后在Google API开发者控制台将其打入您的API凭据。OAuth 2.0 client IDs即使您实际上没有在应用程序中使用该client_id,也需要为Android客户端输入它。如果您将其他API用于Android,请将相同的SHA1放在相应的密钥凭据下API keys


0

这是一个新的。我试图用我公司的Google Apps域中的ID登录仿真器6小时,但无济于事,出现12501错误。直觉上,我尝试了我的个人gmail ID,它可以正常工作。同上,如果我尝试使用带有公司ID的电话。事实证明,该模拟器没有正确的“移动设备管理”设置,无法允许我的公司ID登录。

因此,如果要使用此公司ID在模拟器上进行测试,则必须先安装Google Play商店,然后安装MDM软件,然后进行配置。


0

从我对这个错误的怪异经验来看,我可以说您还需要尝试重新启动手机才能摆脱该错误:)我使用G Suite帐户实施了Google登录,该帐户具有通过Google Admin分配的设备策略。因此,在首次登录时,它要求安装Device Policy应用。在所有后续步骤完成之后,它仅抛出12501错误。同一时间,同一应用在其他手机上运行正常。因此,只有重新启动才有帮助。但有所帮助


0

尽管在这个问题上已经有很多赞成的答案,但我仍难以理解其逻辑。因此,我提出了自己的研究。

要获取SHA-1,请在终端中运行以下命令:

keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v

关于 OAuth 2.0 client IDs

  • 网络的OAuth(在应用中,用作server_client_id
  • 适用于Android的OAuth(需要使用正确的程序包名称和签名证书指纹SHA-1创建)。

如果您使用不同的密钥库进行调试和发布,则需要OAuth 2.0 client IDs使用各自的软件包名称SHA-1来创建单独的密钥库。

您可以在OAuth 2.0 client IDs此处 https://console.developers.google.com/apis/credentials?project=创建或编辑

  1. 导航到您的应用。
  2. 如果您已经拥有用于Android的OAuth,请单击其名称并检查程序包名称SHA-1

通过将密钥库详细信息保存在全局(本地,而不是在项目内部)并按如下方式gradle.properties获取,我们可以将同一密钥库用于调试和发布build.gradle

def key_alias = ""
def key_password = ""
def store_file = ""
def store_password = ""

try {
    key_alias = YOUR_KEY_ALIAS
    key_password = YOUR_KEY_PASSWORD
    store_file = YOUR_KEYSTORE_PATH
    store_password = YOUR_KEYSTORE_PASSWORD
} catch (Exception exception) {
    throw new IllegalStateException('Failed to find key store details. Social Login is disabled');
}

android {
    signingConfigs {
        config {
            keyAlias key_alias
            keyPassword key_password
            storeFile file(store_file)
            storePassword store_password
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.config
            // ...
        }
        release {
            signingConfig signingConfigs.config
            // ...
        }
    }
}

您可以在下面的代码段中使用

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {
            // ...
        } else if (result.getStatus().getStatusCode() == CommonStatusCodes.NETWORK_ERROR) {
            // No internet connection
        } else if (result.getStatus().getStatusCode() == CommonStatusCodes.DEVELOPER_ERROR) {
            // Wrong server OAuth key(server_client_id)
        } else if (result.getStatus().getStatusCode() == 12501) {
            // Wrong app signing-certificate fingerprint SHA1
        } else {
            Log.e("Google sign in error", result.getStatus().toString());
        }
    }
}

注意:如果在生成配置文件时仅启用了Google登录,则无需google-servies.json在项目中添加文件。(生成文件将执行必要的配置步骤)。


0

请尝试执行以下步骤:

  1. 克隆以下项目https://github.com/googlesamples/google-services

  2. 遵循https://developers.google.com/identity/sign-in/android/start上的指南

  3. 使用网络客户端(由Google Service自动创建)并将其添加到requestIdToken(...)

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
       .requestEmail()  
       .requestIdToken("YOUR_WEB_API_ID.apps.googleusercontent.com")
       .build();
    
  4. 确保您使用的密钥库与添加到Google项目中的密钥库相同。例如,如果您使用以下命令生成SHA-1密钥

    keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore    
    
  5. 然后在android {...}内部的app / build.gradle文件中添加以下代码[解决了我的问题]

    signingConfigs
    {
        debug 
        {
            storeFile file("/home/ashwin/.android/debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
    
    buildTypes
    {
        release
        {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug
        {
            signingConfig signingConfigs.debug
        }
    }
    

注意:您的keyPassword和keyAlias应该与生成SHA-1证书时使用的相同。


0

1.在gradle文件中指定signingConfigs

signingConfigs {
        config {
            keyAlias 'appalias'
            keyPassword 'hunter123'
            storePassword 'hunter123'
            storeFile file('path/to/keystore.jks')
        }
}

2.转到项目结构的构建类型(在Android Studio中),然后将signingConfigs指定为“ config”

现在清理您的项目并重新构建。它应该工作。

如果上述方法不起作用,那么以下是您的最后选择。
尝试第一步,构建并检查。如果它不起作用,请转到下一步并尝试重新构建。

  1. 构建一个签名的apk(选中记住的密码)。
  2. 签名之前,请检查密钥库文件的文件名,并在对apk进行签名时放弃(在Android Studio中)。
  3. 将签名的APK安装在设备中。
  4. 等待五分钟。
  5. 尝试唱歌给Google。如果仍然有12501,请再等5分钟。同时执行gradle同步。
  6. 再试一次。它应该工作。

0

由于该应用要求从网络视图访问Google登录,因此我们需要创建网络应用身份验证客户端ID v2.0

  1. 转到Google API凭据

    从左上角选择您的Android项目

    2

  2. 单击创建凭据-> OAuth客户端ID->选择Web应用程序

  3. 点击确定

  4. 现在,如果您已将Android Studio与Firebase同步(已登录),则只需重建项目即可;否则,请下载更新的 google-services.json文件并替换现有的。

    它应该工作正常。


0

我也有同样的问题,解决方法如下:

  1. 我被删除以前认为的SHA1,并创建和设置新的SHA1。

  2. 生成新的google-services.json并设置到我的应用程序目录中

  3. 我当时正好使用Google开发人员代码

  4. result.isSucces()在运行项目后返回true

作为摘要,删除旧的sha1并创建新的sha1并下载新的google-services.json


0

我面临着同样的12501 status错误。这是由于发行APK和调试APK的SHA-1不匹配所致。

  1. 制作签名的APK。要对APK进行签名,请选择用于创建SHA-1的密钥库的现有路径。例如/.android/debug.keystore
  2. 输入别名:androiddebugkey
  3. storepass和keypass:android。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.