google登录中的statusCode = DEVELOPER_ERROR

时间:2016-05-24 18:44:08

标签: android google-plus google-login android-googleapiclient google-developer-tools

我正在使用Google登录代码。我在app文件夹中添加了google-services.json文件。我在root gradle模块中使用classpath 'com.google.gms:google-services:2.0.0'。我已经在开发者控制台检查了我的软件包并且它正确我在终端上运行命令keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android添加了SHA1密钥(我正在使用ubuntu)。我启用了Google+ API。我创建了OAuth许可屏幕和OAuth客户端ID。当我尝试时,我得到以下错误用google-

登录
  

{statusCode = DEVELOPER_ERROR,resolution = null}

我检查了类似的问题,但找不到合适的解决方案。 代码

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestProfile().requestId()
            .requestEmail().requestScopes(new Scope(Scopes.PLUS_ME))
            .requestScopes(new Scope(Scopes.PLUS_LOGIN))
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    googleButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);

    }
    });

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        } 
    }
    private void handleSignInResult(GoogleSignInResult result) {
        if (result.isSuccess()) {
            // Signed in successfully, show authenticated UI.
            GoogleSignInAccount acct = result.getSignInAccount();

        } else {
            // Signed out, show unauthenticated UI.
            // updateUI(false);
        }
    }
    @Override
    protected void onStart() {
        super.onStart();
        mGoogleApiClient.connect();
    }
    @Override
    protected void onStop() {
        super.onStop();
        if(mGoogleApiClient.isConnected())
        {
            mGoogleApiClient.disconnect();
        }
    }
    @Override
    protected void onResume() {
        super.onResume();
        if(mGoogleApiClient.isConnected())
        {
            mGoogleApiClient.connect();
        }
    }

清单

<uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <!-- To use account credentials -->
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
  <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

7 个答案:

答案 0 :(得分:6)

您的问题可能是因为您从~/.android/debug.keystore中选择了SHA1,但未使用它来签署您的版本。

  1. 转到模块选项“签名”标签,然后添加一个配置文件,其中唯一的字段Store File设置为/Users/<your_user>/.android/debug.keystore

  2. 在Flavors选项卡上,在Signing Config下拉列表中选择它。

  3. 在“构建类型”标签上,在Signing Config下拉列表中选择您的构建类型(可能是Debug)。

  4. 清理和重建。

答案 1 :(得分:5)

如果您使用的是两台不同的计算机,则必须再次生成SHA1并添加到console.firebase.google.com,下载google-service.json并添加到您的项目中

答案 2 :(得分:5)

我遇到同样的问题而且this solution有效。 希望这会对你和其他人有所帮助。

应用插件:'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
  

确保此applicationId与清单文件中的包名称相同(大写和小写的内容)

        applicationId "com.example" 
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

答案 3 :(得分:3)

将.requestIdToken(BACKEND_CLIENT_ID)与您的GoogleSignInOptions一起使用。

如何获取BACKEND_CLIENT_ID可在此处找到:https://developers.google.com/identity/sign-in/android/start-integrating#get_your_backend_servers_oauth_20_client_id

希望这有帮助!

答案 4 :(得分:3)

通过在我的应用的firebase控制台中添加调试密钥库 SHA-1 来解决 它位于这里 C:\ Users \ my name.android 当你为发布创建密钥库时,在firebase控制台中更改它

答案 5 :(得分:0)

感谢Aleksey Gureiev提示......我通过确保在构建期间实际使用调试键来解决我的问题。

对于我在Android Studio中的问题是Signing Config根本没有设置。我仍然想知道它是如何发生的。

一旦我将Signing Config设置为我的配置名称&#34; debug&#34;然后一切都开始起作用了。

enter image description here

答案 6 :(得分:0)

我的React Native项目遇到了同样的问题。

我必须使用SHA-1 key文件夹生成debug.keystore in android/app

将目录更改为cd C:\Program Files\Java\jdk1.8.0_251\bin后,在终端中运行以下命令。 (您可能具有其他JDK版本)。

keytool -list -v -keystore "D:\{ProjectName}\android\app\debug.keystore" -alias androiddebugkey -storepass android -keypass android