2016-11-14 18 views
0

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; 
    } 
} 

答えて

0

私はそれがトラブルを起こしていたエミュレータた

、作業それを得ました。 これまでのところ、ノーガットは私のためのsuccesではありません。 6.0へ戻る

関連する問題