Googleでログインした後、Googleログインからユーザー名を取得し、それを次のアクティビティに渡すスクリプトを作成しました。Google Firebaseのログインが機能しない
問題は、Facebookのログインボタンを作成してスクリプトに追加しようとしましたが、機能しませんでした。今私はFacebookのログインボタンの仕事をするために行ったすべてを逆転しようとしましたが、現在私のGoogleログインも失敗しています。
私は今4時間以上テストして試しています。私は答えを見つけることができません。
これまで私が行ってきたことは、どこが間違っているかをテストしています。 この質問に対する回答は次のとおりです。 onActivityResult ログに「firebaseauthwithgoogle:+ acct.getId」が表示されます。 しかし、私は "mAuth.signInWithCredential(信用証明書).addOnCompleteListener"からの応答を取得しないでください
"onComplete"メソッドは実行されません。私は本当にそれを取得しないでください。 私は再び働いてそれを得るために助けてください:)
これは私のスクリプトです:
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
};
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
/*mGoogleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signIn();
}
});*/
findViewById(R.id.sign_in_button).setOnClickListener(this);
}
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
protected void onStop() {
super.onStop();
if(mAuthListener != null)
mAuth.removeAuthStateListener(mAuthListener);
}
@Override
protected void onPause() {
super.onPause();
AppEventsLogger.deactivateApp(this);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
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()) {
System.out.println("ALEX: Result is Succes");
// Google Sign In was successful, authenticate with Firebase
GoogleSignInAccount account = result.getSignInAccount();
firebaseAuthWithGoogle(account);
} else {
System.out.println("ALEX: RESULT IS FAILED!!");
// Google Sign In failed, update UI appropriately
// ...
}
}
}
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
System.out.println("Current user : " + mAuth.getCurrentUser());
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Log.w(TAG, "signInWithCredential", task.getException());
Toast.makeText(MainActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
private void logIn() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
Intent myIntent = new Intent(MainActivity.this, LoggedInIndex.class);
if (user != null) {
myIntent.putExtra("uid", user.getDisplayName());
myIntent.putExtra("email", user.getEmail());
myIntent.putExtra("pic", user.getPhotoUrl().toString());
} else {
myIntent.putExtra("uid", "failed");
myIntent.putExtra("email", "failed");
}
startActivity(myIntent);
}
private void signIn(){
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
public static void signOut(){
FirebaseAuth.getInstance().signOut();
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Log.d(TAG, "Connection failed.");
}
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.sign_in_button:
signIn();
break;
}
}