2016-04-09 25 views
1

facebook widget'ından giriş yapmak için facebook widget'ından LoginButton kullanıyorum. Ben kullanıcı e-posta ve şifresini sağladıktan sonra ilk kez giriş yapmış sonra ben giriş butonu facebook giriş iletişim tıklayabilir iki sorunlar-Oturum Aç facebooktan bağlanın

1.When yaşıyorum

mLoginButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      LoginManager.getInstance().logInWithReadPermissions(MainActivity.this,Arrays.asList("public_profile", "user_friends")); 
      } 
     }); 

başka giriş gösterir iki times.So açar Kapatmam gereken bir diyalog.

2. Giriş yaptıktan sonra bir sonraki ekrana geçersem, giriş ekranına geri dönersem, oturum açma ekranında oturum açma metnini ideal olarak gösterir.Ama tıkladığımda hem giriş hem de çıkış iletişim kutusunu açabilirim.Ancak o Aşağıda

. Ben kullanıcı zaten giriş ise idam edilmesini LoginManager.getInstance().logInWithReadPermissions(MainActivity.this,Arrays.asList("public_profile", "user_friends")); önleyecektir sadece iletişim box.How çıkış açılmalıdır ben loginButton üzerinde

public class MainActivity extends AppCompatActivity { 
private LoginButton mLoginButton; 
    CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     setContentView(R.layout.activity_main); 
     callbackManager = CallbackManager.Factory.create(); 
//  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
//  setSupportActionBar(toolbar); 
     mLoginButton = (LoginButton) findViewById(R.id.login_button); 

     mLoginButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       AccessToken accessToken = AccessToken.getCurrentAccessToken(); 
if(accessToken==null) { 
    LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "user_friends")); 

} 
      } 
     }); 
     mLoginButton.registerCallback(callbackManager, 
       new FacebookCallback<LoginResult>() { 
        @Override 
        public void onSuccess(LoginResult loginResult) { 

        } 
        @Override 
        public void onCancel() { 
        } 
        @Override 
        public void onError(FacebookException exception) { 
        } 
       }); 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
} 

cevap

0

Kaldır setOnClickListener, Login'i sadece RegisterCallBack o kod kullanıyorum edilir Düğme ve her şeyi ele alacaktır, loginButton için setOnClickListener'a ihtiyacınız yoktur. Iki kez denir çünkü setOnClickListener ve registerCalBack'i ayarladınız.

CallbackManager callbackManager = CallbackManager.Factory.create(); 

loginButton = (LoginButton) findViewById(R.id.fbLogin); 
loginButton.setReadPermissions(Arrays.asList("user_status,public_profile,user_friends,email,user_birthday")); 
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
    @Override 
    public void onSuccess(final LoginResult loginResult) { 

    } 

    @Override 
    public void onCancel() { 

     } 

    @Override 
     public void onError(FacebookException error) { 

     } 
    }); 

kullanıcı

AccessToken accessToken = AccessToken.getCurrentAccessToken(); 
     if (accessToken != null) { 
     } 
     return accessToken != null; 
+0

Zaten – user3751386

+0

bunu denir almaz OnError üzerinde kontrol eder misiniz yapmış tarafından veya kayıt tutulmasını olmadığını kontrol edebilirsiniz? –

+0

Bu çağrılır. Sorun, giriş düğmesine tıkladığımda facebook oturum açma iletişim kutusu iki kez açılır. Kullanıcı e-postasını ve şifresini sağladıktan sonra ilk kez oturum açtıktan sonra, kapatmam gereken başka bir oturum açma iletişim kutusu gösterir. – user3751386