【问题标题】:Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}错误:状态{statusCode=DEVELOPER_ERROR,分辨率=null}
【发布时间】:2016-09-13 09:04:07
【问题描述】:

我正在使用 gplus 登录,并在我在 onActivityResult 时收到此错误....

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

    if (requestCode == 0) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {

            GoogleSignInAccount acct = result.getSignInAccount();
//                Log.d("Result","details"+ acct.getDisplayName() + acct.getEmail());

            mEmail = acct.getEmail();
            String mFullName = acct.getDisplayName();
            String mGoogleplusId = acct.getId();


            SocialUser user = new SocialUser();
            user.setType("googleplus");

            user.setEmail(mEmail);
            user.setFullname(mFullName);
            user.setId(mGoogleplusId + "");
            loginParams.put("email_id", mEmail);
            loginParams.put("googlePlusId", mGoogleplusId);
            loginParams.put("full_name", mFullName);
            loginParams.put("registrationType", "googleplus");
            SignUpService(user);


        } else {
            Toast.makeText(CustomerLogIn.this, "Unable to fetch data, Proceed manually", Toast.LENGTH_SHORT).show();
        }
    }
}

我呼吁在按钮单击时登录 gplus。在单击按钮时执行以下代码....

 GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(CustomerLogIn.this)

            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();


    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, 0);

我遇到了这个错误...

Status{statusCode=DEVELOPER_ERROR, resolution=null}

在这条线上....

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

请提出解决方案。

【问题讨论】:

  • 应用程序配置错误。检查 google api 配置。
  • 是的,但我无法找出问题所在。
  • 我不使用 Firebase。在这里查看我的解决方案:stackoverflow.com/a/46828895/1160216
  • 您必须添加您的网络客户端 ID。不是 android 客户端 ID。
  • @JohnStuart 常规网络客户端 ID

标签: android google-plus


【解决方案1】:

您需要将 SHA1 密钥添加到 Firebase 控制台配置。 你可以这样做:

Firebase 控制台 (https://console.firebase.google.com) -> 您的项目 -> 配置 -> 滚动到

您可以在 Android Studio 中找到运行“签名报告”的 SHA1 密钥:

然后,查看“运行选项卡”并单击按钮:

我认为这是更简单的方法。希望对您有所帮助。

【讨论】:

  • 这是从谷歌开发者控制台获取发布版 SHA-1 的最简单方法:stackoverflow.com/a/50124038/4923891
  • 我很难理解将 SHA 密钥放在 Firebase 控制台中的哪个位置。终于找到了。打开项目设置 > 向下滚动,添加指纹,将您的 SHA 密钥放在那里 > 下载新的 google-services.json 并将其放置在 android-app\app
  • 注意!即使 firebase 控制台有 SHA-256 密钥哈希空间,您也必须输入 SHA-1 密钥。 SHA-256 仍然会给你错误
  • 很有帮助。谢谢!
【解决方案2】:

您可能使用 production 令牌的 SHA1 创建了配置文件,使用 androiddebugkey 别名收集与您的应用调试版本对应的 SHA1 并将配置文件复制到 ' app' 目录,你应该有两个配置文件(一个用于调试目的,另一个用于生产环境)。

基于https://developers.google.com/identity/sign-in/android/start发布的演练

【讨论】:

  • 当我切换到 Web 客户端凭据而不是 OAuth 2.0 客户端 ID 的 Android 客户端时,我的错误已得到修复。当我正在开发一个与 Web 服务器对话的 Android 应用程序时,措辞仍然让我感到困惑......但至少该错误已经消失了
【解决方案3】:

我修复它的方法是拿起与突出显示的文本对应的键。由于 Firebase 文档页面中“服务器”一词的使用令人困惑,我选择了 Server key 。这就是问题的原因。

您可以找到密钥here

【讨论】:

  • 谢谢!在我的情况下工作。我认为它以某种方式与使用自己的后端服务器有关(并在 GoogleSignIn 中调用“requestServerAuthCode”)
【解决方案4】:

我遇到了同样的问题,我通过以下步骤解决了问题:

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

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

2.现在为您的项目生成一个签名的 apk。该过程包括为您的应用程序的发布版本生成密钥库。

  Copy the path of the newly generated .jks file.

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

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

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

现在你可以走了! - - 希望!它有帮助。

【讨论】:

  • 只发布了 sha1 然后也得到了这个错误,生成 google_services.xml 用于 google 登录,分析和 gcm,单个文件
  • 确保您的 sha1 是应用程序的“发布”版本,而不是“调试”版本
  • 哈是的,我正在生成签名的 apk 并在 appstore 中发布,jks 和密钥库密码仅在使用
  • 我的开放 ssl 是 openssl-0.9.8k_WIN32 我使用 previos 进行开发
  • keytool 需要密码:“android”
【解决方案5】:

我遇到了同样的问题,我的解决方法是我的 gradle 文件中的 applicationId 与清单文件中的包名称不同。我曾经使用 applicationId 来创建 json 文件。我不得不将我的包名称更改为我的 applicationId 并为我修复了它。

【讨论】:

  • 我一直认为 Manifest 中的包被 gradle 中定义的 ApplicationId 覆盖了。不是这样吗?
【解决方案6】:

除了此处提供的答案之外,您还可以使用 Android Studio 的 Firebase 助手,通过单击一些按钮将您的 SHA-1 自动添加到您的项目中。

在 Android Studio 中,转到 Tools > Firebase > Select 'Authentication' 并单击显示为 'Email and password authentication' 的链接。

这将为您提供有关如何将身份验证集成到您的项目的小教程,但由于您可能已经完成了所有这些,只需单击 'Connect to Firebase' 即可。

【讨论】:

    【解决方案7】:

    这是一个老问题,但我最近一直遇到错误 10 (DEVELOPER_ERROR),因为我使用的是我在谷歌开发者控制台中创建的 Android 客户端 ID。

    对我来说,解决方案是在谷歌开发者控制台中使用 Android 凭据,仅指示我的 apk 的 SHA 密钥,并在我的科尔多瓦应用程序中使用来自谷歌开发者控制台的 Web 应用程序 (!) 凭据的客户端 ID。

    config.xml:

    <plugin name="cordova-plugin-googleplus" spec="^5.3.0">
        <variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.[web-application-client-id]" />
        <variable name="WEB_APPLICATION_CLIENT_ID" value="[web-application-client-id].apps.googleusercontent.com" />
    </plugin>
    

    代码:

    window.plugins.googleplus.login(
        {
           'webClientId': '[web-application-client-id].apps.googleusercontent.com'
        }, 
        ...
    

    我不使用 Firebase。

    【讨论】:

    • 非常感谢,它为我节省了很多时间。事实上,使用自动生成的网络 client id 解决了 DEVELOPER_ERROR 问题。虽然对我来说这没有意义,而且应该使用不同的客户端 ID 并不明显。
    【解决方案8】:

    您可能生成并添加了错误的 SHA1 密钥。使用以下步骤在 Android Studio 中生成 SHA1 密钥:

    1. 点击 Gradle(从右侧面板,您将看到 Gradle 栏)
    2. 点击 Refresh(从 Gradle Bar 中点击 Refresh,您将看到 List Gradle 脚本)
    3. 单击您的项目(您的项目名称表单列表(根))
    4. 点击任务
    5. 点击安卓
    6. 双击签名报告(您将在运行栏中获得 SHA1 和 MD5(有时会在 Gradle 控制台中))

    现在在你的 firebase android 项目中添加这个 SHA1 密钥。

    【讨论】:

      【解决方案9】:

      请将正确的 json 文件放入 android 项目的根目录
      更多请参考:https://coderzpassion.com/android-working-latest-google-plus-login-api/

      【讨论】:

      • 那个json是不是必须要加,我们以前不用它?
      • 我把正确的文件和正确的配置,仍然有错误
      【解决方案10】:

      该错误是因为调试或发布密钥的 SHA-1 校验和未包含在 firebase/google 控制台中。

      首先使用以下命令生成密钥:

      keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME
      

      然后复制 SHA-1 校验和并转到:

      Firebase 控制台 > 您的项目 > 应用设置 > 添加指纹

      【讨论】:

        【解决方案11】:

        对我来说,当我第一次实现它时它正在工作,但在开发几天后就停止了,并出现上述错误消息。

        我已经通过以下步骤解决了这个问题:

        1. 我在 Firebase 控制台中已有的 sha-1 指纹之上添加了 sha-256 指纹。 (不确定是否需要此步骤)
        2. 我已经重新下载了 google-services.json 文件并替换了旧文件。
        3. 重新安装应用

        成功了

        【讨论】:

          【解决方案12】:

          我在我的 firebase 应用中遇到了这个错误。 当我在下面添加requestIdToken(activity.getString(R.string.default_web_client_id)) 部分时,它已修复。

          GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                  .requestEmail().requestIdToken(activity.getString(R.string.default_web_client_id))
                  .build();
          
              apiClient = new GoogleApiClient.Builder(activity)
                  .addConnectionCallbacks(this)
                  .enableAutoManage(activity, this)
                  .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                  .build();
          
              Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(apiClient);
              activity.startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN);
          

          【讨论】:

          • 什么是 default_web_client_id?从哪里可以买到?
          • @AymanAl-Absi 您是否为 Google 服务正确设置了项目?见:developers.google.com/android/guides/google-services-plugin
          • @AymanAl-Absi 您还可以在此文件中从您的 google-service.json 文件中获得“default_web_client_id”,您可以在该标签中看到 Client_ID 标签,您只复制该文本 (client_ID) .
          【解决方案13】:

          当我使用新的 Google 帐户更新我的 json 配置文件时出现此错误。

          手动卸载应用程序并重新安装应用程序对我有用。

          【讨论】:

            【解决方案14】:

            对于发布应用程序的任何人,您都需要密钥库文件中的特殊指纹。难怪我为什么只在发布版本中收到此错误。 How to obtain Signing certificate fingerprint (SHA1) for OAuth 2.0 on Android?

            【讨论】:

              【解决方案15】:

              确保在 Firebase 控制台的身份验证下启用 Google 登录。

              【讨论】:

                【解决方案16】:

                我通过在这一行中使用正确的 server_client_id 解决了我的问题:

                String serverClientId = getString(R.string.server_client_id);
                

                我使用了错误的代码。

                【讨论】:

                  【解决方案17】:

                  谷歌登录等某些服务需要将 SHA1 指纹添加到您的 Firebase 控制台。

                  我错过了在 firebase 控制台中添加 SHA 指纹。您可以通过进入 FireBase 控制台 > 项目设置 > 添加指纹选项来执行此操作。

                  您可以通过非常简单的方式生成SHA1指纹https://www.youtube.com/watch?v=FczARQ244GE

                  之后我又犯了一个错误

                  通过上述方法生成 SHA1 密钥后。我复制了错误的无效 SHA1 密钥,该密钥已过期。因此,请确保您从上述方式输出复制的 SHA1 密钥是有效的(检查有效的直到值以及 SHA1 密钥)

                  还要确保您在 firebase 中添加的包名称(x.y.z)与您的 android 代码中使用的相同。

                  还要确保使用正确的 AppID

                  【讨论】:

                    【解决方案18】:

                    经过长时间的调查,我找到了解决方案。实际上这个错误Error: Status{statusCode=DEVELOPER_ERROR, resolution=null} 指向不正确的 SHA-1 OR 不正确的包名 OR 其他?就我而言,我将 debug 关键字添加到我的包名末尾 com.sample.app => com.sample.app.debug

                    【讨论】:

                    • 在我的项目中,包名是正确的,并且与谷歌服务 json 中的相同。而且我认为发布密钥中不需要 SHA-1
                    【解决方案19】:

                    我在这个问题上苦苦挣扎,因为我通过更改包名称复制了我的应用程序。 我在 Firebase 上为它添加了一个新项目。 我的错误是我忘记将服务器的客户端 ID 更改为新 Firebase 项目中的那个。

                    more details under authintication with Firebase sectoin here

                    【讨论】:

                      【解决方案20】:

                      当您让 Google 管理您的应用签名时,您可以在 Google Play 控制台中找到 SHA-1 密钥。 在侧边栏菜单上查找“配置 -> 应用程序完整性”。您将在此处找到已签名应用的 SHA-1 密钥。

                      您还会看到已上传到商店的签名应用的 SHA-1 密钥。

                      【讨论】:

                        【解决方案21】:

                        别忘了添加释放指纹。前一个答案告诉您只需添加调试指纹,当您在调试模式下运行应用程序时,您的问题就可以解决。如果您发布您的应用程序,您可以看到您的问题仍然存在。然后确保你也添加了释放指纹。

                        【讨论】:

                          【解决方案22】:

                          如果您在已发布版本(生产)中遇到此问题

                          转到 Google Play 控制台,然后从 Release -> Setup -> App Integrity 复制 SHA-1 密钥

                          【讨论】:

                            【解决方案23】:

                            如果您使用的是从 "Internal App Sharing" 部署的应用版本,也可能会发生这种情况 为您生成了另一个证书,您还需要在 Firebase 或 GCP 上注册它的 SHA-1 指纹

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2019-02-14
                              • 2017-01-03
                              • 2017-03-19
                              • 2019-08-06
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多