在Android App中成功登录Facebook后切换到另一项活动

时间:2015-09-26 07:48:40

标签: android facebook facebook-android-sdk facebook-sdk-4.0

我是Adroid应用程序开发的新手,并开始学习大约一周。 但是,自从3天后,我正在努力在Facebook登录成功后切换活动。

我的问题:

1)一旦用户登录,我需要重定向到我的另一个活动。 2)我需要在下一个活动框架(将在登录后出现)上获取他们的个人资料详细信息,如个人资料图片,电子邮件和姓名等。

当前状态:登录后,片段保持不变,并显示“注销”按钮。

我的片段代码:

public class LoginFragment extends Fragment {

private CallbackManager mCallbackManager;
public AccessTokenTracker mAccessTokenTracker;
public ProfileTracker mProfileTracker;

private FacebookCallback<LoginResult> mCallback = new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        AccessToken accesstoken = loginResult.getAccessToken();
        Profile profile = Profile.getCurrentProfile();
        Log.d("get me profile", "Name");
        //Log.d("Welcome :", profile.getName());


    }

    @Override
    public void onCancel() {

    }

    @Override
    public void onError(FacebookException e) {

    }
};

public LoginFragment(){

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getActivity().getApplicationContext());

    mCallbackManager = CallbackManager.Factory.create();

    AccessTokenTracker mAccessTokenTracker = new AccessTokenTracker() {
        @Override
        protected void onCurrentAccessTokenChanged(AccessToken oldtracker, AccessToken newtracker) {

        }
    };

    mAccessTokenTracker.startTracking();

    ProfileTracker mProfileTracker = new ProfileTracker() {
        @Override
        protected void onCurrentProfileChanged(Profile oldprofile, Profile newprofile) {
            //Log.d("New Name", "data");
        }
    };

    mProfileTracker.startTracking();
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.login_main, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
    loginButton.setReadPermissions("public_profile");
    loginButton.setFragment(this);
    loginButton.registerCallback(mCallbackManager, mCallback);

}

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

@Override
public void onDestroy() {
    super.onDestroy();
    mAccessTokenTracker.stopTracking();
    mProfileTracker.stopTracking();
}

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

}

请求你善意的话让这些人工作。

1 个答案:

答案 0 :(得分:1)

回答你的第一个问题 1)在FacebookCallback:onSuccess方法中,您可以使用将打开下一个活动的方法,并在 Fragment onCreate中,将检查 AccessToken 是否为Null,如果为null则不等待User按下登录,如果它不是Null,则调用相同的方法打开 Activity 需要用户已登录

2)您已检查文档和权限以获取当前登录用户的个人资料图片和名称,如果您有任何疑问,请编写您首先使用的代码以获取用户数据