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

Posted

技术标签:

【中文标题】在 Android App 中成功登录 Facebook 后切换到另一个活动【英文标题】:Switch to another activity after successful Facebook login in Android App 【发布时间】:2015-09-26 07:48:40 【问题描述】:

我是 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】:

回答你的第一个问题 1) 在FacebookCallback:onSuccess 方法中,您可以使用打开下一个Activity 所需的方法,在FragmentonCreate 中,您将检查是否AccessToken 为 Null,如果为 Null 则不执行任何操作等待用户按登录,如果不是 Null,则调用相同的方法打开所需的 Activity用户已经登录

2)您已经检查了文档和权限以获取当前登录用户的头像和姓名,如果您有疑问,请编写您首先使用的代码来获取用户数据

【讨论】:

以上是关于在 Android App 中成功登录 Facebook 后切换到另一个活动的主要内容,如果未能解决你的问题,请参考以下文章

用于 Facebook 聊天的 Asmack 不适用于 PrivacyListManager

如何抓取Android系统APP测试的日志

Android破解学习之路——简单的登录破解

[源码]Android安卓应用手势锁图案解锁的实现

Android之QQ授权登录获取用户信息

友盟统计怎么算新增用户 android