エラー:ステータス{statusCode = DEVELOPER_ERROR、resolution = null}


102

私は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'hafs 2016年

6
はい、何が悪いのかわかりません。
Gurvinder Singh

Firebaseは使用していません。ここで私のソリューションを参照してください:stackoverflow.com/a/46828895/1160216
Mike Miller

回答:


213

Firebaseコンソールの構成にSHA1キーを追加する必要があります。あなたはこのようにそれを行うことができます:

Firebase console(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 consoleにはSHA-256キーハッシュ用のスペースがありますが、SHA-1キーを入力する必要があります。SHA-256でもエラーが発生します
f.khantsis

参考になりました。ありがとう!
Pooja

30

おそらく、本番トークンのSHA1を使用して構成ファイルを作成し、androiddebugkeyエイリアスを使用してアプリのデバッグバージョンに対応するSHA1を収集し、構成ファイルを「app」ディレクトリにコピーします。両方の構成ファイルが必要です(1つはデバッグ目的と本番環境用の別の目的)。

https://developers.google.com/identity/sign-in/android/startで公開されているチュートリアルに基づく


5
OAuth 2.0クライアントIDをAndroidクライアントではなくWebクライアントの認証情報に切り替えると、エラーが修正されました。Webサーバーと通信するAndroidアプリを開発しているので、この文言は私を混乱させます...しかし、エラーは少なくともなくなりました
Burrito

12

私は同じ問題を抱えていて、次の手順を実行することでそれを機能させました:

1.firebaseプロジェクトにDEBUG_KEYSTORE SHA1フィンガープリントを追加します。次のコマンドを使用します(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.Now次のコマンドを使用してRELEASE_KEYSTORE SHA1フィンガープリントを生成します

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

4.新しいSHA1を出力からコピーし、Firebaseアプリケーションコンソールで別のSHA1フィンガープリントとして追加します。

これで準備完了です。 - - 望む!助けになる。


そのリリースされたsha1が配置するだけで、このエラーも発生し、googleサインイン、分析およびgcm、単一ファイル用のgoogle_services.xmlが生成されます
Harsha

あなたのsha1が「デバッグ」バージョンではなく「リリース」バージョンのアプリであることを確認してください
Udit Kapahi

はい、署名されたapkを生成してappstoreでも公開しています。jksとキーストアのパスワードのみが使用しています
Harsha

私のオープンsslはopenssl-0.9.8k_WIN32です。開発1にプレビオを使用しています
Harsha

keytool パスワードが必要: "android"
Guglie

11

ここに画像の説明を入力してください

私が修正した方法は、強調表示されたテキストに対応するキーを拾うことでした。Firebaseのドキュメントページで「サーバー」という単語が混同されているため、私はをピックアップしましたServer key。これが問題の理由でした。

キーはここにあります


ありがとう!私の場合は働いた。独自のバックエンドサーバーの使用(およびGoogleSignInでの "requestServerAuthCode"の呼び出し)に何らかの形で関連していると思います
ITurchenko

5

私は同じ問題を抱えていましたが、それを解決した方法は、gradleファイルのapplicationIdがマニフェストファイルのパッケージ名と異なることです。そして、jsonファイルを作成するためにapplicationIdを使用しました。パッケージ名を私のapplicationIdに変更する必要があり、それによって修正されました。


1
マニフェストのパッケージは、gradleで定義されたApplicationIdによってオーバーライドされるといつも思っていました。そうではありませんか?
Flo We

3

ここで提供される回答の代わりに、Android StudioのFirebase Assistantを使用して、いくつかのボタンをクリックするだけでSHA-1をプロジェクトに自動的に追加できます。

Android Studioで、に移動するTools > Firebase > Select 'Authentication'リンクに移動してクリックします'Email and password authentication'

これにより、Authenticationをプロジェクトに統合する方法についての小さなチュートリアルが表示されますが、おそらくすべて完了しているので、クリックするだけで'Connect to Firebase'完了です。


3

これは古い質問ですが、AndroidクライアントIDを使用していたため、最近、エラー10(DEVELOPER_ERROR)に悩まされ、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は使用しません。


どうもありがとうございました。実際に自動生成されたWebを使用することでclient id、DEVELOPER_ERRORの問題は解決しました。私にとっては意味がありませんが、異なるクライアントIDを使用する必要があるかどうかは明らかではありません。
Myroslav Kolodii、

3

間違ったSHA1キーを生成して追加した可能性があります。Android StudioでSHA1キーを生成するには、次の手順を使用します。

  1. Gradleをクリックします(右側のパネルからGradle Barが表示されます)
  2. [更新]をクリックします(Gradleバーから[更新]をクリックすると、プロジェクトのリストGradleスクリプトが表示されます)
  3. プロジェクトをクリックします(プロジェクト名フォームリスト(ルート))
  4. タスクをクリックします
  5. Androidをクリックします
  6. signingReportをダブルクリックします(実行バーにSHA1とMD5が表示されます(Gradleコンソールに表示される場合もあります))。

次に、このSHA1キーをfirebase androidプロジェクトに追加します。


3

正しいjsonファイルをandroidプロジェクトのルートに配置して
ください詳細については、こちらを参照してください:https : //coderzpassion.com/android-working-latest-google-plus-login-api/


そのjsonを追加することは必須ですか、以前はそれを使用していませんでしたか?
Gurvinder Singh

私は正しい構成で正しいファイルを入れましたが、それでもエラーがあります
Bibaswann Bandyopadhyay '27

1

私にとってそれは最初にそれを実装したときに機能していましたが、言及されたエラーメッセージで数日間の開発後に停止しました。

次の手順で問題を解決しました:

  1. 私は、firebase consoleですでに持っていた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とは何ですか?どこから入手できますか?
Ayman Al-

@ 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

このエラーは、デバッグキーまたはリリースキーのSHA-1チェックサムがfirebase / google consoleに含まれていないために発生します。

最初に、次のコマンドを使用してキーを生成します。

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

次に、SHA-1チェックサムをコピーして、次の場所に移動します。

Firebase Console>プロジェクト>アプリの設定>指紋を追加



0

Firebaseコンソールの[Authentication]で、Googleログインを有効にしてください。


0

この行で正しいserver_client_idを使用して問題を解決しました:

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

間違ったコードを使用しました。


0

Googleログインなどの一部のサービスでは、SHA1フィンガープリントをFirebaseコンソールに追加する必要があります。

Firebase consoleで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のポイントOR不正なパッケージ名または他の何か?。私の場合、debugパッケージ名の最後にキーワードを追加しますcom.sample.app=>com.sample.app.debug


0

パッケージ名を変更してアプリケーションのコピーを作成したため、この問題に苦労しました。Firebaseで新しいプロジェクトを追加します。私のミスは、サーバーのクライアントIDを新しいFirebaseプロジェクトのクライアントIDに変更するのを忘れていたことです。

Firebase sectoinによる認証の詳細はこちら

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.