如果已经登录,最好的方法是在android中登录facebook登录页面

时间:2017-10-13 07:17:09

标签: android facebook facebook-graph-api facebook-login facebook-android-sdk

我使用Facebook登录登录我的Android应用程序。在这里我检查访问令牌是否为空,以便我可以在登录后移动到另一个活动。这工作正常。请帮助有没有更好的方法在Facebook登录时移动另一项活动?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_boringmain);

    callbackManager = CallbackManager.Factory.create();
    List<String> permissions = new ArrayList<>();
    permissions.add("email");

    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions(permissions);

    profileTracker = new ProfileTracker() {
        @Override
        protected void onCurrentProfileChanged(Profile profile, Profile profile1) {
            Profile.setCurrentProfile(profile1);
        }
    };

    profileTracker.startTracking();

    accessTokenTracker = new AccessTokenTracker() {
        @Override
        protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken,AccessToken currentAccessToken) {
                 AccessToken.setCurrentAccessToken(currentAccessToken);
        }
    };

     if (AccessToken.getCurrentAccessToken()!=null) {
        Intent intent = new Intent(boringmain.this, UserProfile.class);
        startActivity(intent);
      } 
     else 
      { 
        Log.e("S","User not logged in "); 
       }

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

        };

        @Override
        public void onCancel() {
            // App code
        }

有没有更好的方法做上述情况?配置文件跟踪器和访问令牌跟踪器的使用是否正确?

1 个答案:

答案 0 :(得分:1)

通过调用

检查用户是否已登录
if (AccessToken.getCurrentAccessToken()!=null) 

是好方法。但在我看来,更好的地方是检查它是在打开登录活动之前。您可以随意调用此代码,如果 AccessToken.getCurrentAccessToken() null ,则打开登录活动

在登录活动中,您应该在成功登录后转到另一个活动:

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
       //START NEW ACTIVITY AFTER CORRECT LOGIN HERE

      Intent intent = new Intent(boringmain.this, UserProfile.class);
      startActivity(intent);
    };

    @Override
    public void onCancel() {
    };
  });