web-dev-qa-db-ja.com

GoogleログインのstatusCode = DEVELOPER_ERROR

以下のコードは、Googleログインに使用しています。アプリフォルダーにgoogle-services.jsonファイルを追加しました。ルート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を作成しました。それでも取得できます。グーグルでログインしようとすると以下のエラー-

{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" />
5

問題は、~/.Android/debug.keystoreからSHA1を選択したが、ビルドへの署名にSHA1を使用していないことにある可能性があります。

  1. モジュールオプションの[署名]タブに移動し、フィールドStore Fileのみを/Users/<your_user>/.Android/debug.keystoreに設定してプロファイルを追加します。

  2. [フレーバー]タブで、[Signing Config]ドロップダウンでそれを選択します。

  3. [ビルドタイプ]タブで、ビルドタイプの[Signing Config]ドロップダウンでそれを選択します(おそらくDebug)。

  4. クリーンアップと再構築。

6
Aleksey Gureiev

私は同じ問題を抱えており、 この解決策 は機能しました。これがあなたや他の人に役立つことを願っています。

プラグインを適用します: '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'
        }
    }
}
5
Ravi Vaniya

異なる2台のコンピューターで作業している場合は、SHA1を再度生成して、console.firebase.google.comに追加し、google-service.jsonをダウンロードして、プロジェクトに追加する必要があります。

5
Moises Apaza Q

ここにある私のアプリのFirebaseコンソールにSHA-1 of debug key storeを追加することで解決しましたC:\ Users\my name.Androidreleaseのキーストアを作成するときにFirebaseコンソールで変更します

3
amorenew

GoogleSignInOptionsで.requestIdToken(BACKEND_CLIENT_ID)を使用します。

BACKEND_CLIENT_IDを取得する方法はここにあります: https://developers.google.com/identity/sign-in/Android/start-integrating#get_your_backend_servers_oauth_20_client_id

これがお役に立てば幸いです。

3
teh.fonsi

ヒントをくれたAlekseyGureievに感謝します...ビルド中にデバッグキーが実際に使用されることを確認することで問題を解決しました。

Android Studioの私にとって、問題はSigningConfigがまったく設定されていないことでした。それがどのように起こったのかまだ疑問です。

Signing Configを「debug」という名前の構成に設定すると、すべてが機能し始めます。

enter image description here

0
Sameer