2017-09-15 3043 views
1

我剛剛從Facebook身份驗證切換到Twitter身份驗證。 Facebook工作正常,但現在我的登錄屏幕上有這個Twitter按鈕,點擊它時甚至不會發出聲音。有人有任何想法嗎?我是否應該在我的清單中加入一些內容以使其正常工作?我也更新了API和密鑰。Android Firebase - Twitter登錄按鈕甚至沒有聲音

public class LoginActivity extends Activity{ 




private TwitterLoginButton loginButton; 


private FirebaseAuth firebaseAuth; 

private ProgressDialog progressDialog; 

private static final String TAG = "LoginActivity.class"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    TwitterConfig config = new TwitterConfig.Builder(this) 
      .logger(new DefaultLogger(Log.DEBUG)) 
      .twitterAuthConfig(new TwitterAuthConfig("CONSUMER_KEY", "CONSUMER_SECRET")) 
      .debug(true) 
      .build(); 
    Twitter.initialize(config); 


    loginButton = (TwitterLoginButton) findViewById(R.id.login_button); 
    loginButton.setCallback(new Callback<TwitterSession>() { 
     @Override 
     public void success(Result<TwitterSession> result) { 


      progressDialog = new ProgressDialog(LoginActivity.this); 
      progressDialog.setMessage("Logging you in"); 
      progressDialog.show(); 
      handleTwitterSession(result.data); 
     } 

     @Override 
     public void failure(TwitterException exception) { 
      // Do something on failure 

      System.out.println("failed for some reason"); 
     } 
    }); 



    firebaseAuth = FirebaseAuth.getInstance(); 

    if(firebaseAuth.getCurrentUser() != null){ 
     finish(); 
     startActivity(new Intent(getApplicationContext(), MainActivity.class)); 
    } 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    loginButton.onActivityResult(requestCode, resultCode, data); 
} 

private void handleTwitterSession(TwitterSession session) { 
    Log.d(TAG, "handleTwitterSession:" + session); 

    AuthCredential credential = TwitterAuthProvider.getCredential(
      session.getAuthToken().token, 
      session.getAuthToken().secret); 

    firebaseAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 
         // Sign in success, update UI with the signed-in user's information 
         Log.d(TAG, "signInWithCredential:success"); 
         FirebaseUser user = firebaseAuth.getCurrentUser(); 
         checkUserAndStart(); 
        } else { 
         // If sign in fails, display a message to the user. 
         Log.w(TAG, "signInWithCredential:failure", task.getException()); 
         Toast.makeText(LoginActivity.this, "Authentication failed.", 
           Toast.LENGTH_SHORT).show(); 

        } 

        // ... 
       } 
      }); 
} 

private void checkUserAndStart(){ 
    DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("users").child(firebaseAuth.getCurrentUser().getUid()).child("bio"); 
    db.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot.exists()){ 
       progressDialog.dismiss(); 
       finish(); 
       startActivity(new Intent(getApplicationContext(), MainActivity.class)); 
      }else{ 
       finish(); 
       progressDialog.dismiss(); 
       startActivity(new Intent(getApplicationContext(), CreateProfileActivity.class)); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 

} 

和波紋管是我簡單的登錄按鈕佈局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_login" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/baseColor" 
android:gravity="center" 
tools:context="com.morticia.android.pop.activities.LoginActivity"> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="16dp" 

     android:padding ="16dp" 
     android:layout_gravity="center" 
     android:weightSum="2"> 


     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="70dp" 
      android:src="@drawable/maincircmdpi" 
      android:id="@+id/imageView4" /> 


     <com.twitter.sdk.android.core.identity.TwitterLoginButton 
      android:id="@+id/login_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:clickable="true"/> 

    </LinearLayout> 
</ScrollView> 
</RelativeLayout> 

感謝 -T

回答

0

新秀的舉動。

​​需要高於setContentView();

補充說,在頂部,現在它工作正常。

刪除此:

TwitterConfig config = new TwitterConfig.Builder(this) 
     .logger(new DefaultLogger(Log.DEBUG)) 
     .twitterAuthConfig(new TwitterAuthConfig("CONSUMER_KEY", "CONSUMER_SECRET")) 
     .debug(true) 
     .build(); 
Twitter.initialize(config); 

-T