まず第一に、私はAndroid開発に非常に慣れていないので、明らかなことを見落とした場合は許してください。
大学のプロジェクトでは、Firebaseを使用してGoogleアカウントでユーザーを最初に認証するアプリを作成する必要があります。私は最初に見つけた指示に従いました ここ 。
まず、貼り付けたものをコピーします Firebaseチュートリアルのこのコード 1つを除いて、すべてが機能しているようです:
_@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "------------------ onActivityResult ------------------");
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
Log.d(TAG, "------------------ googleSignInSuccess ------------------");
// Google Sign In was successful, authenticate with Firebase
GoogleSignInAccount account = result.getSignInAccount();
firebaseAuthWithGoogle(account);
// Start menu activity once the user has been logged in
Intent intent = new Intent(this, MenuActivity.class);
startActivity(intent);
} else {
Log.d(TAG, "------------------ googleSignInFailure ------------------");
// Google Sign In failed, update UI appropriately
// [START_EXCLUDE]
//Log.d(TAG, result.getStatus().getStatusMessage());
updateUI(null);
// [END_EXCLUDE]
}
}
}
_
ここでは、result.isSuccess() == false
です。ですから、なんらかの理由でグーグル認証が失敗したと思います。正しいパスワードを入力したことを確認しました。アプリのFirebaseコンソールでGoogleアカウント認証も有効にしました。
よろしくお願いします。
[〜#〜] edit [〜#〜]:より正確には、エミュレータでプログラムを初めて実行したとき(または毎回実行した後)データをワイプします)、ポップアップする専用のGoogleログインアクティビティにGoogleの資格情報を入力する必要があります。これは正常に機能し、同じアクティビティで正常に認証されたようです。ただし、その後もresult.isSuccess()
はfalseのままであり、その理由がわかりません。
私はついに問題を発見しました。Firebaseコンソールでアプリを認証しているときに間違いを犯しました ここ (「始める前に」のセクション)、4番目のステップ。代わりにdebug
を入力しましたが、現在は機能しています。
それでもありがとう!
結果のステータスはresult.getStatus().getStatusMessage()
で確認できます。このメッセージをログに記録するか、結果をデバッグしてください Status 問題を示しているはずです。 Status
にはgetResolution()
メソッドもあり、失敗を解決するための保留中のインテントを提供します(まず、hasResolution()
を呼び出して解決できるかどうかを確認し、true
を返します。それがあなたのためにそれを処理できるかどうか)。
次の方法でGSOを変更してみてください:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
お役に立てれば !