错误:状态{statusCode = DEVELOPER_ERROR,resolution = null}

问题描述 投票:73回答:15

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

请建议解决方案。

android google-plus
15个回答
170
投票

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

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

enter image description here

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

enter image description here

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

enter image description here

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


1
投票

对我来说,它在我第一次实现它时工作,但在开发几天后停止,并提到了错误消息。

我用这些步骤解决了这个问题:

  1. 我已将sha-256指纹添加到我在firebase控制台中已有的sha-1指纹之上。 (不确定是否需要此步骤)
  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);

0
投票

当我用新的谷歌帐户更新我的json配置文件时,我收到此错误。

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


0
投票

导致该错误的原因是firebase / google控制台中未包含调试或释放密钥的SHA-1校验和。

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

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

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

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


0
投票

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


0
投票

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


28
投票

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

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


10
投票

我有同样的问题,我通过这些步骤使它工作:

1.将DEBUG_KEYSTORE SHA1指纹添加到firebase项目。使用以下命令(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.现在使用以下命令生成RELEASE_KEYSTORE SHA1指纹

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

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

现在你很高兴! ----希望!它有助于。


7
投票

enter image description here

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

你可以找到关键的here


5
投票

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


3
投票

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


3
投票

作为此处提供的答案的替代方案,您可以使用Android Studio Firebase助手通过单击某些按钮自动将SHA-1添加到项目中。

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

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


2
投票

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

对我来说,解决方案是仅使用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。


2
投票

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

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

现在在firebase android项目中添加此SHA1密钥。

© www.soinside.com 2019 - 2024. All rights reserved.