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

时间:2016-05-17 10:10:06

标签: android google-plus

我正在使用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登录。在执行代码后执行clcking按钮....

 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);

请建议解决方案。

22 个答案:

答案 0 :(得分:167)

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

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

enter image description here

您可以找到正在运行的SHA1密钥"登录报告"来自Android Studio:

enter image description here

然后,查看"运行标签"然后单击按钮:

enter image description here

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

答案 1 :(得分:27)

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

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

中发布的演练

答案 2 :(得分:10)

我遇到了同样的问题,我通过这些步骤开始工作:

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

  Copy the path of the newly generated .jks file.

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

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

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

options

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

现在你很高兴! ----希望!它会有所帮助。

答案 3 :(得分:7)

enter image description here

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

您可以找到密钥here

答案 4 :(得分:5)

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

答案 5 :(得分:3)

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

答案 6 :(得分:3)

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

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

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

答案 7 :(得分:2)

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

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

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

答案 8 :(得分:1)

这是一个老问题,但我最近一直遇到错误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。

答案 9 :(得分:0)

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

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

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

答案 12 :(得分:0)

我为解决此问题而苦苦挣扎,因为我通过更改程序包名称制作了应用程序副本。 我在Firebase为其添加了一个新项目。 我的错误是我忘记在新的Firebase项目中将服务器的客户端ID更改为该客户端ID。

more details under authintication with Firebase sectoin here

答案 13 :(得分:0)

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

的末尾添加com.sample.app.debug关键字

答案 14 :(得分:0)

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

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

您可以通过非常简单的方法https://www.youtube.com/watch?v=FczARQ244GE

生成SHA1指纹

那之后我又犯了一个错误

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

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

还要确保使用正确的AppID

答案 15 :(得分:0)

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

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

我使用了错误的代码。

答案 16 :(得分:0)

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

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

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

成功了

答案 17 :(得分:0)

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

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

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

import java.util.ArrayList;
import java.util.Scanner;

public class OrderArrayList {
      ArrayList<OrderList> orderList;
      public OrderArrayList() {
           orderList = new ArrayList();
      }

      public boolean isEmpty() {
           return orderList.isEmpty();
      }

       public void push(OrderList x) {
           orderList.add(x);
      }

      public void addOrder() {
           Scanner input1 = new Scanner(System.in);
           System.out.print("Product code: ");
           String pcode = input1.nextLine();

           Scanner input2 = new Scanner(System.in);
           System.out.print("Customer Code: ");
           String ccode = input2.nextLine();

           Scanner input3 = new Scanner(System.in);
           System.out.print("Quantity: ");
           int quantity = input3.nextInt();

           OrderList order = new OrderList(pcode, ccode, quantity);
           orderList.push(order);
       }

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

  

Firebase控制台&gt;你的项目&gt; <应用程序的设置>添加指纹

答案 20 :(得分:0)

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

手动卸载应用程序并重新安装适用于我的应用程序。

答案 21 :(得分: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);