退出后无法重新登录facebook

时间:2016-01-17 18:10:26

标签: android facebook android-fragments

我将facebook登录集成到我的Android应用程序中。我在启动应用程序时能够登录,但是当我退出并返回到初始屏幕再次登录时,它没有登录我被带到移动设备的主屏幕。但是当我再次从启动器重新启动应用程序并尝试登录时,我能够登录。但是在应用程序中,当我尝试重新登录时,它不会登录。
有关信息,我使用自定义按钮登录facebook。

以下是代码:

片段和OnCreate()方法

  public class SocialFragment extends Fragment implements View.OnClickListener {

 private AccessTokenTracker accessTokenTracker;
 private ProfileTracker profileTracker;
 private CallbackManager callbackManager;


 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            initializeFaceBook();

    }

//启动Facebook SDK

 private void initializeFaceBook(){
        Log.d(TAG,"initializeFacebook.......");
        FacebookSdk.sdkInitialize(getActivity().getApplicationContext());

        callbackManager = CallbackManager.Factory.create();

      accessTokenTracker= new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) {
                 Log.d(TAG,"onCurrentAccessTokenChanged()");
            }
        };

        profileTracker = new ProfileTracker() {
            @Override
            protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) {
                //displayMessage(newProfile);
                Log.d(TAG,"onCurrentProfileChanged()");
            }
        };

        accessTokenTracker.startTracking();
        profileTracker.startTracking();
    }

//自定义按钮点击登录Facebook

private void fbLogin(){
        LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));
    }

//包含布局的

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view =  inflater.inflate(R.layout.fragment_social, container, false);
        mContainerId = container.getId();

        ImageButton fBook = (ImageButton)view.findViewById(R.id.fbook);
        fBook.setOnClickListener(this);

        return view;
    }

// OnClickMethod()

@Override
    public void onClick(View v) {
        switch (v.getId()){

            case R.id.fbook:
                 fbLogin();
                //onFblogin();
                break;


        }
    }

// OnActivityResult

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

//销毁

@Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "In onDestroy().........");
        profileTracker.stopTracking();
        accessTokenTracker.stopTracking();
    }

//启动新片段

private void displayMessage(Profile profile){
        if(profile != null){
            Log.d("PROFILE", profile.getName());
            Toast.makeText(getActivity(), "Facebook Profile Name:::" + profile.getName(), Toast.LENGTH_LONG).show();
                    getFragmentManager().beginTransaction().replace(mContainerId,new BikePoolerMapFragment()).commit();
        }
    }

//的onResume()

 @Override
    public void onResume() {
        super.onResume();
        Profile profile = Profile.getCurrentProfile();
        displayMessage(profile);
    }
}

在其他片段中使用退出:

LoginManager.getInstance().logOut();

任何人都可以帮助我在app中重新登录facebook。 除了我使用的方式之外,有没有办法注销facebook。

使用的Facebook SDK:4.8.2 使用Android Studio

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我的解决方案是确保CallbackManager的实例是正确的。

管理facebook的单身人士有一个错误的CallbackManager实例,因此回调没有被解雇。

希望它有所帮助。

使用Android Studio和SDK 4.8.2