2016-04-09 2 views
1

私はfacebookウィジェットのLoginButtonを使ってFacebookにログインしています。私は、ユーザーのメールアドレスとパスワードを提供した後に初めてログインした後、私は私がログインボタンFacebookのログインダイアログをクリックして2 issues-facebookのLoginButton

1.Whenを持っています

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

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

は、それが別のログインを示して2 times.Soを開きます私は閉じる必要があるダイアログ。

私がログインして次の画面に移動した後、ログイン画面に戻ってきたら、ログインボタンに理想的なログアウトテキストが表示されます。クリックすると、ログインとログアウトの両方のダイアログボックスが開きます。それは、ユーザがすでにログインしている場合、私が実行されてからLoginManager.getInstance().logInWithReadPermissions(MainActivity.this,Arrays.asList("public_profile", "user_friends"));を防ぐ必要があります以下

は私が

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

答えて

0

を使用しています彼のコードである。ただ、ダイアログbox.Howログアウト開くログインにloginButton、ちょうどRegisterCallBackにsetOnClickListenerを削除する必要がありますボタンをクリックするとすべてが処理され、loginButtonにはsetOnClickListenerは必要ありません。 setOnClickListenerとregisterCalBackの両方を設定しているため、2回呼び出されます。

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) { 

     } 
    }); 

ユーザーが

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

私はすでに – user3751386

+0

あなたはそれが呼び出されませんというのonErrorをチェックできることを行っていることにより、中かログインしている場合は、確認することができますか? –

+0

これは問題です。ログインボタンをクリックすると問題が発生します。facebookログインダイアログが2回開きます。ユーザーのメールとパスワードを入力して初めてログインした後、別のログインダイアログが表示されます。 – user3751386

関連する問題