• Android--Facebook Login with LoginButton


    1、Layout文件添加Facebook的LoginBurtton

    1 <com.facebook.widget.LoginButton
    2             android:id="@+id/authButton"
    3             android:layout_width="fill_parent"
    4             android:layout_height="wrap_content"
    5             android:layout_gravity="center_horizontal"
    6             android:layout_marginLeft="45dp"
    7             android:layout_marginRight="45dp"
    8             android:layout_marginTop="10dp"
    9             android:background="#FF3B5790" />

    2、 创建MainFragment 类,并且继承Fragment 类,

    重写onCreateView()方法  ;通过LoginButton设置权限 setReadPermissions()    更多权限访问 http://developers.facebook.com/docs/reference/login/#permissions

            重写 onSessionStateChange()方法  ,作用:当session状态改变时调用该方法,state.isOpened() 为 true 时,则证明登录成功

    private UiLifecycleHelper uiHelper;
    private LoginButton authButton;
    
     @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            uiHelper = new UiLifecycleHelper(getActivity(), callback);
            uiHelper.onCreate(savedInstanceState);
         authButton = (LoginButton) view.findViewById(R.id.authButton);
            authButton.setFragment(this);
            authButton.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
            authButton.setReadPermissions(Arrays.asList("email", "user_likes", "user_status"));
        }
    
    
    
     @Override
        public void onResume()
        {
            super.onResume();
            Session session = Session.getActiveSession();
            if (session != null && (session.isOpened() || session.isClosed()))
            {
                onSessionStateChange(session, session.getState(), null);
            }
            uiHelper.onResume();
        }
    
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data)
        {
            super.onActivityResult(requestCode, resultCode, data);
            uiHelper.onActivityResult(requestCode, resultCode, data);
     
        }
    
        @Override
        public void onPause()
        {
            super.onPause();
            uiHelper.onPause();
        }
    
        @Override
        public void onDestroy()
        {
            super.onDestroy();
            uiHelper.onDestroy();
        }
    
        @Override
        public void onSaveInstanceState(Bundle outState)
        {
            super.onSaveInstanceState(outState);
            uiHelper.onSaveInstanceState(outState);
        }
    
        private Session.StatusCallback callback = new Session.StatusCallback()
        {
            @Override
            public void call(Session session, SessionState state, Exception exception)
            {
                onSessionStateChange(session, state, exception);
            }
        };
     private void onSessionStateChange(Session session, SessionState state, Exception exception)
        {
            if (state.isOpened())
            {
    
                loginByFacebookFinished(session);
    
            }
            else if (state.isClosed())
            {
            }
        }
    
    
    
    /**
    *登陆成功
    **/
    private void loginByFacebookFinished(final Session session) { Request request = Request.newMeRequest(session, new GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { dismissLoadingDlg(); try { AccountInfo accountInfo = null; accountInfo = new AccountInfo(); accountInfo.setVip(false); accountInfo.setHasLogin(true); accountInfo.setToken(session.getAccessToken()); //用户信息 if (user != null) { accountInfo.setShowUserName(user.getName()); accountInfo.setPassword(user.getLink()); accountInfo.setLoginType(LoginType.FACEBOOK); accountInfo.setEmail(user.getProperty("email") + ""); accountInfo.setLoginName(user.getProperty("name") + ""); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); request.executeAsync(); }

    3、退出登录

     /**
         * Logout From Facebook 
         */
        public  void callFacebookLogout(Context context) {
            Session session = Session.getActiveSession();
            if (session != null) {
                
                if (!session.isClosed()) {
                    session.closeAndClearTokenInformation();
                    //clear your preferences if saved
                }
            } else {
                
                session = new Session(context);
                Session.setActiveSession(session);
                
                session.closeAndClearTokenInformation();
                //clear your preferences if saved
            }
            
        }
  • 相关阅读:
    蓝牙搜索
    Log4cpp介绍及使用
    单独卸载vs2010帮助文档HelpView之后的独立安装教程
    C++Builder RAD Studio XE, UTF-8 String 转换为 char * 字符串的最简单方式, 常用于sqlite3开发
    vs2012 MSDN帮助文档离线包下载安装方法
    关于OBJ/LIB格式,我以前有个总结
    关于C++ const 的全面总结
    在 C++Builder 工程里调用 DLL 函数
    c++builder调用VC的dll以及VC调用c++builder的dll
    C++Builder及VC的库相互调用
  • 原文地址:https://www.cnblogs.com/crane13/p/4059490.html
Copyright © 2020-2023  润新知