Google sign-in Android with Firebase - statusCode DEVELOPER_ERROR

22 人关注

我试图在我的Firebase连接的Android应用中实现Google登录。 当我运行应用程序并按下Google Sign In按钮时,什么都没有发生。而且我在onActivityResult中收到这个错误。 状态{statusCode=DEVELOPER_ERROR, 分辨率=null}。 .

My code looks like this:

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_GOOGLE_LOGIN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()){
            GoogleSignInAccount account = result.getSignInAccount();
            String emailAddres = account.getEmail();
            getGoogleQAuthToken(emailAddres);
         private void getGoogleQAuthToken(final String emailAddres){
             AsyncTask<Void,Void,String> task = new AsyncTask<Void, Void, String>() {
                 String errorMessage = null;
                 @Override
                 protected String doInBackground(Void... params) {
                     String token = null;
                     try {
                         String scope = "oauth2:profile email";
                         token = GoogleAuthUtil.getToken(MainActivity.this, emailAddres, scope);
                     } catch (IOException transientEx) {
                         errorMessage = "Network error: " + transientEx.getMessage();
                     } catch (UserRecoverableAuthException e) {
                         Intent recover = e.getIntent();
                         startActivityForResult(recover, MainActivity.REQUEST_CODE_GOOGLE_LOGIN);
                     } catch (GoogleAuthException authEx) {
                         errorMessage = "Error authenticating with Google: " + authEx.getMessage();
                     return token;

我已经在app/目录下添加了JSON配置文件,并添加了依赖性。

     buildscript {
repositories {
    jcenter()
dependencies {
    classpath 'com.google.gms:google-services:1.5.0-beta2'
     dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.+'
compile 'com.firebase:firebase-client-android:2.3.0+'
/* For Google Play Services */
compile 'com.google.android.gms:play-services-safetynet:8.3.0'
compile 'com.google.android.gms:play-services-auth:8.3.0'
compile 'com.google.android.gms:play-services:8.3.0'
compile('com.afollestad.material-dialogs:core:0.8.3.0@aar') {
    transitive = true
/* Firebase UI */
compile 'com.firebaseui:firebase-ui:0.2.2'
compile 'com.android.support:cardview-v7:23.1.+'
compile 'com.android.support:recyclerview-v7:23.1.+'
compile 'com.android.support:design:23.1.+'
     apply plugin: 'com.google.gms.google-services'

我已经在寻找解决方案了......。 请帮助我!!!!。

android
firebase
google-authentication
firebase-authentication
firebaseui
user5866501
user5866501
发布于 2016-05-23
13 个回答
Ian Barber
Ian Barber
发布于 2019-12-04
已采纳
0 人赞同

DEVELOPER_ERROR 表示Google Play服务无法根据你的SHA1和软件包名称从控制台找到匹配的客户端。你可以在设置页面中添加SHA1,在 Firebase控制台 为一个给定的软件包名称,或通过以下方式添加一个新的软件包名称 将Firebase添加到你的Android应用中 button.

一般来说,要检查的一些事情。

  • Make sure your package name is what you expect - e.g. its the one in your build.gradle, and its not being overriden in a build variant or product flavor.
  • Make sure you have registered your debug and release SHA1 keys in the console.
  • SKen
    我的软件包名称和SHA1已经在控制台中注册,我已经导入了一个现有的谷歌应用程序,我也在应用程序目录中包含了json文件。但我还是被同样的错误所困扰。
    有几件事情要检查。检查他们是否作为客户端ID/连接应用注册,而不是作为API密钥。另外,试着用aapt检查你的APK,以确保它真的使用了你想要的SHA1和包名:有时它可能提取了一个与预期不同的keystore,或者gradle规则正在调整包名。
    SKen
    我知道你的答案是最有可能的原因,尤其是我用不同的密钥库构建的版本工作得非常好。但是,我的debug ey一直是一样的,我的SHA1密钥和我的软件包名称都没有变化。我还是不能让它在调试构建中工作。
    可能是设备上的本地缓存状态不好--在谷歌设置应用程序中,你可以清除第三方数据,这应该会刷新它,或者在一个新设备或模拟器上试试。
    SKen
    我也试过了,我有一堆测试设备,我用它们进行了测试。
    g2server
    g2server
    发布于 2019-12-04
    0 人赞同

    If Google Play应用程序签名 是为你的应用程序启用的。 那么它将在发布前用谷歌服务器上的签名密钥替换你的发布密钥。

    你可以从以下方面检查它是否被启用。 Google Play Console -> Release Management -> App Signing

    在我的案例中,为了解决这个错误,我不得不这样做。

  • copy the SHA1 from the 'App signing certificate' section
  • add it to the Firebase projects general settings section
  • regenerate the json file
  • add it to the project
  • re-upload the apk
  • 我的情况100%是这样的。我的其他应用程序,没有通过Google Play控制台激活 "应用程序签名"。但由于某些原因,我的新应用有--当通过Google Play上传/发布时,它改变了SHA1。
    即使我只是想在本地进行测试,也需要这样做吗?
    @RaulH 不,只有通过Google Play Console发布的发布版本,以及启用Google Play App Signing时才需要。
    谢谢你,这对我来说是有效的。在Firebase中加入SHA1后,不需要重新上传APK。
    Hitesh Sahu
    Hitesh Sahu
    发布于 2019-12-04
    0 人赞同

    错误代码10是 CommonStatusCodes.DEVELOPER_ERROR 的常量值,这意味着你已经错误地配置了你的项目。

    你可以做什么

  • 检查PlayStore控制台和Firebase控制台的SHA是否相同。

    从Google Play控制台复制SHA

    Log.w(TAG, "Google sign in failed", e); String messageToDisplay = "Authentication failed."; switch (e.getStatusCode()) { case CommonStatusCodes.API_NOT_CONNECTED: //17 messageToDisplay += "The client attempted to call a method from an API that failed to connect."; break; case CommonStatusCodes.DEVELOPER_ERROR: //10 messageToDisplay += "The application is misconfigured."; break; case CommonStatusCodes.ERROR: //13 messageToDisplay += "The operation failed with no more detailed information."; break; case CommonStatusCodes.INTERNAL_ERROR: //8 messageToDisplay += "An internal error occurred."; break; case CommonStatusCodes.INVALID_ACCOUNT: //8 messageToDisplay += "Invalid account name specified."; break; case CommonStatusCodes.SIGN_IN_REQUIRED: //8 messageToDisplay += "Please Sign In to continue."; break; Toast.makeText(LoginActivity.this, messageToDisplay, Toast.LENGTH_SHORT).show();
  • 0 人赞同

    我有同样的问题。发生的情况是这样的,你有一个SHA1 debug和release SHA1。通常情况下,我们只使用SHA1调试和生成的.apk签名到google play,但当我们使用google sigin时,你必须输入Firebase release的SHA1。

    要查看发布的SHA1,请使用以下命令。

     keytool -list -v -keystore C:\ProjectsData\keystore\my-release-key.keystore -alias alias_name 
    

    然后在Firebase上输入这个SHA1

    https://support.google.com/firebase/answer/7000104

    这个答案是SHA1。

    密钥库证书的 SHA-1 指纹

    Hope I helped you.

    我也有同样的错误,在添加了发行版和调试版的SHA1密钥后,问题得到了解决。
    你是上天派来的救世主。非常感谢你 @伊斯梅尔
    Julian Raj
    Julian Raj
    发布于 2019-12-04
    0 人赞同

    有同样的问题。但在我清理和重建项目后,工作很好。

    聪明的!🙇🏻♂️
    Srikanth
    Srikanth
    发布于 2019-12-04
    0 人赞同

    我使用以下步骤创建了新的调试SHA1密钥,并在我的项目设置中替换了SHA1密钥,这对我来说是有效的。
    -Open Your Project.
    -Click on File menu -> New -> Click on Google -> Select Google Maps Activity -> Click on Finish. -Android studio would generate automatic google_maps_api.xml file.
    -你可以在这个文件中获得调试的SHA1密钥。

    在项目设置中替换这个SHA1密钥,然后从设置中下载新的 google-services.json 并替换到你的项目中,因为你的证书_hash和client_id将会改变。

    Udit Kapahi
    Udit Kapahi
    发布于 2019-12-04
    0 人赞同

    我有同样的问题,我通过做这些步骤让它工作。

    1.在firebase项目中添加DEBUG_KEYSTORE SHA1指纹。使用以下命令(MAC/LINUX)

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

    2.现在生成你的项目的签名apk。这个过程包括为你的应用程序的发布版本生成一个keystore。复制新生成的.jks文件的路径。

    3.现在使用以下命令生成RELEASE_KEYSTORE SHA1指纹

    keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME
    

    4.从输出中复制新的SHA1,并将其作为另一个SHA1指纹添加到你的Firebase应用控制台中。

    现在你就可以走了!---- 希望!这对你有帮助。

    szab.kel
    szab.kel
    发布于 2019-12-04
    0 人赞同

    在这上面花了两个小时。尝试了这里和这里提到的一切 github issue .我仍然得到同样的开发者错误。

    对我有用的是强迫android studio使用一个新的调试签名密钥,并将新的密钥添加到firebase控制台。

    当你在android studio中生成 signingReport 时,它也会打印出你的密钥库的位置。比如说。

    > Task :app:signingReport
    Variant: debug
    Config: debug
    Store: C:\Users\<Username>\.android\debug.keystore
    Alias: AndroidDebugKey
    MD5: E0:....
    SHA1: DD....
    SHA-256: B2:81....
    Valid until: Thursday, 23 March 2051
    ----------
    

    我把debug.keystore重命名为debug.keystore_,锁文件也重命名。然后我在android studio里做了一次清理和重建。它自动创建了一个新的密钥库。再次使用signingReport并将新的密钥添加到Firebase控制台项目中。

    This solved the issue for me.

    注意:要仔细检查调试apk的软件包名称。使用aapt2工具。https://developer.android.com/studio/command-line/aapt2

    默认情况下,它对我来说是位于android-sdk\build-tools\<version>\aapt2.exe的路径中。

    aapt2 dump packagename <projectpath>\app\build\outputs\apk\debug\app-debug.apk
    

    尽管对我来说,清单和build.gradle的清单是一样的。

    pRaNaY
    pRaNaY
    发布于 2019-12-04
    0 人赞同

    我认为你需要改变你的游戏服务版本。

    See Firebase Android Codelab 以增加 Firebase Auth的依赖性 到你的app/build.gradle文件。

    尝试在gradle中更新你的play-service,如下所示。

    /* For Google Play Services */
    compile 'com.google.android.gms:play-services:9.0.0'
    

    DEVELOPER_ERROR :

    应用程序被错误配置。这个错误是无法恢复的,将被视为致命的。开发者应该在这之后看一下日志,以确定更多的可操作信息。

    jaibatrik
    jaibatrik
    发布于 2019-12-04
    0 人赞同

    在创建OAuth密钥时,你需要确保你给出了正确的软件包名称。这意味着你的清单文件中的软件包名称。

    如果你正在使用多个模块(例如一些像FirebaseUI-Android这样的库),那么请确保在创建密钥时,使用你请求Google认证的包的名称。

    Dan Alboteanu
    Dan Alboteanu
    发布于 2019-12-04
    0 人赞同

    我也有同样的问题。经过2天的痛苦,我观察到我发布的SHA1是不正确的(我曾经使用java/bin中的keytool得到它,它给我一个坏的SHA1。可能是因为现在Android Studio使用自己的java包而不是JDK)。这里有更好的方法来获得正确的SHA1 密钥库证书的 SHA-1 指纹

    Prashant Gosai
    Prashant Gosai
    发布于 2019-12-04
    0 人赞同

    Click Here (Google Developer guide line) 并为Firebase控制台创建新项目 这个链接是用默认设置的,所以你不需要手动添加它。

    fxbayuanggara
    fxbayuanggara
    发布于 2019-12-04
    0 人赞同

    If your app is on release mode/production, then you have to get the SHA1 from your-release-store.keystore. If your app is on development mode, then you have to get the SHA1 from your-debug-key.keystore. Copy all the SHA1 to your Firebase project settings > add fingerprint.