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'
私はすでに解決時間を探しています...助けてください!!
Google Playアプリの署名 がアプリで有効になっている場合、その後、公開前にリリース署名キーがGoogleのサーバー上のキーに置き換えられます。
次から有効になっているかどうかを確認できます:Google Play Console -> Release Management -> App Signing
。
私の場合、エラーを解決するには、次のことをしなければなりませんでした。
エラーコード10はCommonStatusCodes.DEVELOPER_ERROR
の定数値であり、プロジェクトの構成が誤っていることを意味します
できること
Firebase Consoleに貼り付けます
他に何ができますか?
わかりやすいメッセージを英語の失敗で表示する
// 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();
同じ問題がありました。何が起こるかは、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です:
お役に立てば幸いです。
私は同じ問題を抱えていて、次の手順を実行することで機能しました。
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フィンガープリントとして追加します。
これで準備完了です! - - 望む!助けになる。
次の手順を使用して新しいデバッグSHA1キーを作成し、プロジェクト設定でSHA1キーを置き換えました。それは私のために働いた。
-プロジェクトを開きます。
-[ファイル]メニュー-> [新規]-> [Google]をクリック-> [Googleマップアクティビティの選択]-> [完了]をクリックします。 -Androidスタジオは自動google_maps_api.xmlファイルを生成します。
-このファイルでデバッグSHA1キーを取得できます。
プロジェクト設定でこのSHA1キーを置き換えてから、新しいgoogle-services.json
を設定し、certificate_hashとclient_idが変更されるので、プロジェクトでそれを置き換えます。
プレイサービスのバージョンを変更する必要があると思います。
Firebase Android Codelab を参照してFirebase Auth依存関係をapp/build.gradleに追加してください)ファイル。
以下のようにgradleでプレイサービスを更新してみてください:
/* For Google Play Services */
...
compile 'com.google.Android.gms:play-services:9.0.0'
...
アプリケーションの構成が正しくありません。このエラーは回復不能であり、致命的として扱われます。開発者はこの後のログを見て、より実用的な情報を判断する必要があります。
OAuthキーを作成するときに、正しいパッケージ名を指定していることを確認する必要があります。これは、マニフェストファイルに含まれるパッケージ名を意味します。
複数のモジュール(例:FirebaseUI-Androidなどのライブラリ)を使用している場合は、キーの作成中に、Google認証を要求するパッケージ名を使用していることを確認してください。
Here (Google Developer guide line)をクリックし、Firebaseコンソールの新しいプロジェクトを作成します。このリンクはデフォルト設定で設定されているため、手動で追加する必要はありません。
同じ問題がありました。 2日間の痛みの後、リリースされたSHA1が不正確であることに気付きました(以前はJava/binのkeytoolを使用して取得していたため、SHA1が不良でした。おそらく、現在Android独自のJavaパッケージ)。ここでcorect SHA1を取得するより良い方法 キーストア証明書のSHA-1フィンガープリント