web-dev-qa-db-ja.com

GoogleログインAndroid Firebaseを使用-statusCode DEVELOPER_ERROR

Firebase connected AndroidアプリにGoogleログインを実装しようとしています。アプリを実行してGoogleサインインボタンを押すと、何も起こりません。onActivityResultでこのエラーを受け取ります:Status {statusCode = DEVELOPER_ERROR、解像度= null}

私のコードは次のようになります。

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_CODE_GOOGLE_LOGIN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

        if (result.isSuccess()){
            GoogleSignInAccount account = result.getSignInAccount();
            String emailAddres = account.getEmail();
            getGoogleQAuthToken(emailAddres);
        }
    }
}

         private void getGoogleQAuthToken(final String emailAddres){
             AsyncTask<Void,Void,String> task = new AsyncTask<Void, Void, String>() {
                 String errorMessage = null;

                 @Override
                 protected String doInBackground(Void... params) {
                     String token = null;
                     try {
                         String scope = "oauth2:profile email";
                         token = GoogleAuthUtil.getToken(MainActivity.this, emailAddres, scope);
                     } catch (IOException transientEx) {

                         errorMessage = "Network error: " + transientEx.getMessage();
                     } catch (UserRecoverableAuthException e) {
                         Intent recover = e.getIntent();
                         startActivityForResult(recover, MainActivity.REQUEST_CODE_GOOGLE_LOGIN);
                     } catch (GoogleAuthException authEx) {
                         errorMessage = "Error authenticating with Google: " + authEx.getMessage();
                     }
                     return token;
                 }

App /ディレクトリにJSON構成ファイルを追加し、依存関係を追加しました。

     buildscript {
repositories {
    jcenter()
}

dependencies {
    classpath 'com.google.gms:google-services:1.5.0-beta2'
}
     }


     dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:23.1.+'
compile 'com.firebase:firebase-client-Android:2.3.0+'

/* For Google Play Services */
compile 'com.google.Android.gms:play-services-safetynet:8.3.0'
compile 'com.google.Android.gms:play-services-auth:8.3.0'
compile 'com.google.Android.gms:play-services:8.3.0'

compile('com.afollestad.material-dialogs:core:0.8.3.0@aar') {
    transitive = true
}

/* Firebase UI */
compile 'com.firebaseui:firebase-ui:0.2.2'

compile 'com.Android.support:cardview-v7:23.1.+'
compile 'com.Android.support:recyclerview-v7:23.1.+'
compile 'com.Android.support:design:23.1.+'


     }
     apply plugin: 'com.google.gms.google-services'

私はすでに解決時間を探しています...助けてください!!

19
user5866501

Google Playアプリの署名 がアプリで有効になっている場合、その後、公開前にリリース署名キーがGoogleのサーバー上のキーに置き換えられます。

次から有効になっているかどうかを確認できます:Google Play Console -> Release Management -> App Signing

私の場合、エラーを解決するには、次のことをしなければなりませんでした。

  1. 「アプリ署名証明書」セクションからSHA1をコピーします
  2. firebaseプロジェクトの一般設定セクションに追加します
  3. jSONファイルを再生成します
  4. プロジェクトに追加します
  5. aPKを再アップロードします
18
g2server

エラーコード10はCommonStatusCodes.DEVELOPER_ERRORの定数値であり、プロジェクトの構成が誤っていることを意味します

できること

  • playStore ConsoleとFirebase ConsoleのSHAが同じかどうかを確認してください。

    コピーSHA Google Playコンソールから

    enter image description here

Firebase Consoleに貼り付けます

enter image description here

他に何ができますか?

わかりやすいメッセージを英語の失敗で表示する

          // Google Sign In failed, update UI appropriately
            Log.w(TAG, "Google sign in failed", e);

            String messageToDisplay = "Authentication failed.";
            switch (e.getStatusCode()) {
                case CommonStatusCodes.API_NOT_CONNECTED: //17
                    messageToDisplay += "The client attempted to call a method from an API that failed to connect.";
                    break;

                case CommonStatusCodes.DEVELOPER_ERROR: //10
                    messageToDisplay += "The application is misconfigured.";
                    break;

                case CommonStatusCodes.ERROR: //13
                    messageToDisplay += "The operation failed with no more detailed information.";
                    break;

                case CommonStatusCodes.INTERNAL_ERROR: //8
                    messageToDisplay += "An internal error occurred.";
                    break;

                case CommonStatusCodes.INVALID_ACCOUNT: //8
                    messageToDisplay += "Invalid account name specified.";
                    break;

                case CommonStatusCodes.SIGN_IN_REQUIRED: //8
                    messageToDisplay += "Please Sign In to continue.";
                    break;
            }

            Toast.makeText(LoginActivity.this, messageToDisplay,
                    Toast.LENGTH_SHORT).show();
7
Hitesh Sahu

同じ問題がありました。何が起こるかは、SHA1デバッグとSHA1のリリースがあります。通常、SHA1デバッグのみを使用し、Google Playに署名された.apkを生成しますが、Google siginを使用する場合は、SHA1のFirebaseリリースを入力する必要があります。

リリースSHA1を表示するには、次のコマンドを使用します。

 keytool -list -v -keystore C:\ProjectsData\keystore\my-release-key.keystore -alias alias_name 

次に、FirebaseでこのSHA1を入力します

https://support.google.com/firebase/answer/7000104

この答えはSHA1です:

キーストア証明書のSHA-1フィンガープリント

お役に立てば幸いです。

6
Ismael Junior

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

1。firebaseプロジェクトにDEBUG_KEYSTORE SHA1フィンガープリントを追加します。次のコマンドを使用します(MAC/LINUX)

keytool -exportcert -list -v \-alias androiddebugkey -keystore ~/.Android/debug.keystore  

2。プロジェクトの署名済みapkを生成します。このプロセスには、アプリのリリースバージョンのキーストアの生成が含まれます。新しく生成された.jksファイルのパスをコピーします。

。次のコマンドを使用してRELEASE_KEYSTORE SHA1フィンガープリントを生成します

keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

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

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

1
Udit Kapahi

次の手順を使用して新しいデバッグSHA1キーを作成し、プロジェクト設定でSHA1キーを置き換えました。それは私のために働いた。
-プロジェクトを開きます。
-[ファイル]メニュー-> [新規]-> [Google]をクリック-> [Googleマップアクティビティの選択]-> [完了]をクリックします。 -Androidスタジオは自動google_maps_api.xmlファイルを生成します。
-このファイルでデバッグSHA1キーを取得できます。

プロジェクト設定でこのSHA1キーを置き換えてから、新しいgoogle-services.jsonを設定し、certificate_hashとclient_idが変更されるので、プロジェクトでそれを置き換えます。

1
Srikanth

プレイサービスのバージョンを変更する必要があると思います。

Firebase Android Codelab を参照してFirebase Auth依存関係をapp/build.gradleに追加してください)ファイル。

以下のようにgradleでプレイサービスを更新してみてください:

/* For Google Play Services */
...
compile 'com.google.Android.gms:play-services:9.0.0'
...

DEVELOPER_ERROR

アプリケーションの構成が正しくありません。このエラーは回復不能であり、致命的として扱われます。開発者はこの後のログを見て、より実用的な情報を判断する必要があります。

0
pRaNaY

OAuthキーを作成するときに、正しいパッケージ名を指定していることを確認する必要があります。これは、マニフェストファイルに含まれるパッケージ名を意味します。

複数のモジュール(例:FirebaseUI-Androidなどのライブラリ)を使用している場合は、キーの作成中に、Google認証を要求するパッケージ名を使用していることを確認してください。

0
jaibatrik

Here (Google Developer guide line)をクリックし、Firebaseコンソールの新しいプロジェクトを作成します。このリンクはデフォルト設定で設定されているため、手動で追加する必要はありません。

0
Prashant Gosai

同じ問題がありました。 2日間の痛みの後、リリースされたSHA1が不正確であることに気付きました(以前はJava/binのkeytoolを使用して取得していたため、SHA1が不良でした。おそらく、現在Android独自のJavaパッケージ)。ここでcorect SHA1を取得するより良い方法 キーストア証明書のSHA-1フィンガープリント

0
Dan Alboteanu