2015-11-17 11 views
5



私はアプリを作成していて、Facebook SDK 4.7.0を使用してログインすることに成功しました。私はこのためのカスタムボタンを持っているので、LoginManager(LoginButtonではない)を使用しています。
の流れはこのようなものです:アプリとMainActivityで迎え 他のアクティビティからログアウトできません(Facebook - Android)

  • [スタート]ボタン

    • オープンして、ログをあなたはFacebookのボタンでサインをクリックしSignInActivityを開き、あなたとし、この活動を閉じ
    • 次にMainActivity画面に戻ります
    • ナビゲーションドロワースライダーの下にLOGOUTボタンがあり、初期化してログインしたとき、つまりFacebookのプロフィールのuser_idが表示されていないときにのみ表示しますnull

  • は私がログアウトボタンonClickListenerに、次の実装:

    FacebookSdk.sdkInitialize(getApplication().getApplicationContext()); LoginManager.getInstance().logOut();

    をしかし、私はそれが何もしない私のデバイス上のボタンを押したときに(標準である、唯一のViewPostImeInputStage ACTION_DOWN logcatに表示さボタンを押すために。

    私はそれが私の場合には動作しませんなぜ私は理解していないので、この方法は非常に働いている上の他の記事を見ました。

    SignInActivity.java

    FacebookSdk.sdkInitialize(getApplication().getApplicationContext()); 
    
        callbackManager = CallbackManager.Factory.create(); 
    
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
         @Override 
         public void onSuccess(LoginResult loginResult) { 
          Log.e(TAG, "User ID: " + loginResult.getAccessToken().getUserId()); 
          Log.e(TAG, "Auth Token: " + loginResult.getAccessToken().getToken()); 
          SharedPreferences prefs = getSharedPreferences("com.dotfreeride.dotfreeride.login", 0); 
          SharedPreferences.Editor editor = prefs.edit(); 
          editor.putString("userId", loginResult.getAccessToken().getUserId()); 
          editor.putString("fbToken", loginResult.getAccessToken().getToken()); 
          editor.commit(); 
         } 
    
         @Override 
         public void onCancel() { 
          Toast.makeText(SignInActivity.this, "Login attempt canceled!", Toast.LENGTH_SHORT).show(); 
         } 
    
         @Override 
         public void onError(FacebookException error) { 
          Toast.makeText(SignInActivity.this, "Login attempt failed!", Toast.LENGTH_SHORT).show(); 
         } 
        }); 
    

    MainActivity.java

    logoutBtn.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           FacebookSdk.sdkInitialize(getApplication().getApplicationContext()); 
           LoginManager.getInstance().logOut(); 
          } 
         }); 
    

    答えて

    1

    これは私がAppCompatActivityをextentedので、私は同じ問題を抱えていた私にとって

    public class Profile extends ActionBarActivity { 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_profile); 
    
    
    } 
    
    public void gotoLogin(View view){ 
        FacebookSdk.sdkInitialize(getApplicationContext()); 
        LoginManager.getInstance().logOut(); 
        Intent intent = new Intent(this, Login.class); 
        startActivity(intent); 
    } 
    

    }

    を働きました。 ActionBarで動作します。あなたのために仕事をすることを願って:)

    関連する問題