错误:状态{statusCode = DEVELOPER_ERROR,分辨率=空}


101

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

请提出解决方案。


1
应用程序配置错误。检查Google API配置。
1'has's

6
是的,但我无法找出问题所在。
Gurvinder Singh's

我不使用firebase。在这里查看我的解决方案:stackoverflow.com/a/46828895/1160216
Mike Miller

Answers:


213

您需要将SHA1密钥添加到Firebase控制台配置中。您可以通过以下方式进行操作:

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

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

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


1
这是从Google开发人员控制台获取SHA-1版本的最简单方法:stackoverflow.com/a/50124038/4923891
eren130

我很难理解将SHA密钥放在Firebase控制台中的位置。终于找到了。打开项目设置>向下滚动,添加指纹,将SHA键放在此处>下载新的google-services.json并将其放入android-app \ app
paakjis,

1
注意!即使Firebase控制台具有用于SHA-256键哈希的空间,您也必须输入SHA-1键。SHA-256仍然会给您带来错误
-f.khantsis,

很有帮助 谢谢!
Pooja

30

可能是您使用生产令牌的SHA1创建了配置文件,使用androiddebugkey别名来收集与您的应用的调试版本相对应的SHA1,然后将配置文件复制到“ app”目录,因此您应该同时拥有两个配置文件(调试目的,另一个用于生产环境)。

根据https://developers.google.com/identity/sign-in/android/start中发布的演练


5
当我切换到Web客户端凭据而不是OAuth 2.0客户端ID的Android客户端时,我的错误已修复。当我正在开发与Web服务器对话的Android应用程序时,这种措辞仍然使我感到困惑……但是错误至少消失了
Burrito

12

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

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,并将其添加为Firebase应用程序控制台中的另一个SHA1指纹。

现在您可以出发了!----希望!它有助于。


释放sha1只是放置然后也得到此错误,生成google_services.xml用于Google登录,分析和gcm,单个文件
Harsha

确保您的sha1是应用程序的“发行”版本而不是“调试”版本
Udit Kapahi

Ha Yes正在生成签名的apk并在appstore中发布,jks和keystore密码仅在使用
Harsha

我开的是SSL使用一个发展的OpenSSL previos,0.9.8k_WIN32上午
戒日

keytool 要求输入密码:“ android”
Guglie

11

在此处输入图片说明

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

您可以在此处找到密钥。


谢谢!就我而言。我认为它以某种方式与使用自己的后端服务器(并在GoogleSignIn中要求“ requestServerAuthCode”)联系在一起
ITurchenko

5

我遇到了同样的问题,如何解决是因为我的gradle文件中的applicationId与清单文件中的包名称不同。而且我曾经使用applicationId创建json文件。我必须将程序包名称更改为我的applicationId,这对我来说已经解决了。


1
我一直认为清单中的包被gradle中定义的ApplicationId覆盖。不是这样吗
Flo我们

3

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

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

这将为您带来一些有关如何将身份验证集成到您的项目的教程,但是由于您已经完成了所有这些操作,因此只需单击即可'Connect to Firebase'完成。


3

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

对我来说,解决方案是仅在Google开发人员控制台中使用Android凭据来指示我apk的SHA密钥,并在我的cordova应用程序中使用来自Google开发人员控制台的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。
Myroslav Kolodii

3

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

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

现在,在您的Firebase android项目中添加此SHA1键。



1

对我来说,当我第一次实现它时它正在工作,但是经过几天的开发后由于提到的错误消息而停止了。

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

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

而且有效


0

我在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
Dan Brough

1
@ AymanAl-Absi您还可以从google-service.json文件中获得“ default_web_client_id”,在此文件中,您可以看到该标签中的Client_ID标签,您仅复制该文本(client_ID)<[Client_ID] .app.etc>。
王子

0

我使用新的Google帐户更新json配置文件时收到此错误。

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


0

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

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

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

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

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



0

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


0

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

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

我使用了错误的代码。


0

诸如Google登录之类的某些服务需要将SHA1指纹添加到您的Firebase控制台。

我错过了在Firebase控制台中添加SHA指纹的功能。您可以通过在FireBase控制台>项目设置>添加指纹选项中进行操作。

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

之后,我又犯了一个错误

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

还要确保您在firebase中添加的软件包名称(xyz)与您的android代码中使用的相同。

还要确保使用正确的AppID


0

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

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.