Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}

Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}

我正在使用 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);

请提出解决方案。

请将正确的 json 文件放入 android 项目的根目录
有关更多信息,请参阅此处:https://coderzpassion.com/android-working-latest-google-plus-login-api/

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

基于 https://developers.google.com/identity/sign-in/android/start

中发布的演练

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

我遇到了同样的问题,我通过执行以下步骤使其正常工作:

1.Add DEBUG_KEYSTORE firebase 项目的 SHA1 指纹。使用以下命令(MAC/LINUX)

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

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

  Copy the path of the newly generated .jks file.

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

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

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

现在你可以开始了! - - 希望!有帮助。

我在我的 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);

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

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

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

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

您可以从 Android Studio 找到您的 SHA1 密钥 运行 "Signing report":

然后,查看 "run tab" 并单击按钮:

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

我修复它的方法是选择与突出显示的文本对应的键。由于在 Firebase 的文档页面中 'server' 这个词的用法令人困惑,我选择了 Server key 。这就是问题的原因。

你可以找到钥匙here

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

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

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

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

Firebase Console > Your project > Settings of the app > Add Fingerprint

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

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

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

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

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

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

我的解决方案是在 google 开发人员控制台中使用 Android 凭据仅指示我的 apk 的 SHA 密钥并使用 Web 应用程序的客户端 ID (!) 凭据来自我的 cordova 应用程序中的 google 开发人员控制台。

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。

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

  1. 单击 Gradle(在右侧面板中,您将看到 Gradle 栏)
  2. 点击刷新(点击刷新自 Gradle 栏,您将看到列出您的项目的 Gradle 脚本)
  3. 单击您的项目(您的项目名称表单列表(根目录))
  4. 点击任务
  5. 点击Android
  6. 双击 signingReport(您将在 运行 栏中获得 SHA1 和 MD5(有时会在 Gradle 控制台中))

现在将此 SHA1 密钥添加到您的 firebase android 项目中。

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

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

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

成功了

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

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

我用错了代码。

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

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

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

之后我又犯了一个错误

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

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

还要确保使用正确的 AppID

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

我在这个问题上遇到了困难,因为我通过更改包名称制作了我的应用程序的副本。 我在 Firebase 为其添加了一个新项目。 我的错误是忘记将服务器的客户端 ID 更改为新 Firebase 项目中的客户端 ID。

more details under authintication with Firebase sectoin here

当您让 Google 管理您的应用程序签名时,您可以在 Google Play 控制台中找到 SHA-1 密钥。 在边栏菜单上查找 'Configuration -> App integrity'。您将在此处找到已签名应用的 SHA-1 密钥。

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

不要忘记添加释放指纹。前面的答案只是添加调试指纹,当您 运行 您的应用程序处于调试模式时,您的问题刚刚解决。如果您发布您的应用程序,您会发现您的问题仍然存在。然后确保你也添加了释放指纹。

如果您运行参与此问题已发布版本(生产):

转到 Google Play console 并从 Release -> Setup -> App Integrity 复制 SHA-1 密钥

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

检查以下步骤

  1. 确保使用正确的 SHA 密钥
  2. 请求 ID 令牌时使用网络客户端 ID,而不是 android 客户端 ID