Android的登录与Facebook SDK 4.0 [英] Android Login with Facebook SDK 4.0

查看:227
本文介绍了Android的登录与Facebook SDK 4.0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望有人能帮助我!我想改变我的code为新的Facebook SDK 4.0,但只有一点点的描述和i'm越来越疯狂和鸵鸟政策知道如何使新的code与Facebook的登录按钮,accesstoken

目标这一code是用户与自己的Facebook帐户,如果用户已经退出检查日志中。如果没有则插入带有电子邮件和Facebook的ID和名称的新用户

我已标记codeS需要与//被改变和//需要改变完

感谢名单提前任何帮助!

进口com.facebook.AccessToken; 进口com.facebook.CallbackManager; 进口com.facebook.FacebookCallback; 进口com.facebook.FacebookException; 进口com.facebook.FacebookSdk; 进口com.facebook.login.LoginResult; 进口com.facebook.login.widget.LoginButton; //进口com.facebook.Request; //进口com.facebook.Request.GraphUserCallback; //进口com.facebook.Response; //进口com.facebook.Session; //进口com.facebook.SessionState; //进口com.facebook.UiLifecycleHelper; //进口com.facebook.model.GraphUser; //进口com.facebook.widget.LoginButton; @燮pressLint(NewApi) 公共类AuthenticationFragment扩展片段{     LoginButton facebookLoginButton;   //私人UiLifecycleHelper uiHelper;     字符串变量=片段;     按钮btnLogin,btnCreateAccount;     ProgressDialog dialogPrg;     字符串username = NULL;     //新的Facebook添加     CallbackManager callbackManager;     公共静态最终AuthenticationFragment的newInstance(){         // TODO自动生成构造函数存根         AuthenticationFragment片段=新AuthenticationFragment();         返回片段;     }     @覆盖     公共无效onAttach(活动活动){         // TODO自动生成方法存根         super.onAttach(活动);     }     @覆盖     公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,                              捆绑savedInstanceState){         // TODO自动生成方法存根         查看查看= inflater.inflate(R.layout.authentication_layout,集装箱,                 假);         facebookLoginButton =(LoginButton)查看                 .findViewById(R.id.btnFacebookLogin);         facebookLoginButton.setFragment(本);         facebookLoginButton.setReadPermissions(Arrays.asList(电子邮件));        //新增为Facebook         //回调注册         facebookLoginButton.registerCallback(callbackManager,新FacebookCallback< LoginResult>(){             @覆盖             公共无效的onSuccess(LoginResult loginResult){                 //应用code                 //登录确定可以访问令牌                 AccessToken.getCurrentAccessToken();             }             @覆盖             公共无效OnCancel的(){                 //应用code                 Log.i(TAG,Facebook的登录取消);             }             @覆盖             公共无效onerror的(FacebookException除外){                 //应用code                 Log.i(TAG,Facebook的登录失败错误);             }         });         //新增为Facebook END         btnLogin =(按钮)view.findViewById(R.id.btn_login);         btnCreateAccount =(按钮)view.findViewById(R.id.btn_create_account);         btnLogin.setOnClickListener(新View.OnClickListener(){             @覆盖             公共无效的onClick(视图v){                 意向意图=新的意图(getActivity(),LoginActivity.class);                 startActivity(意向);             }         });         btnCreateAccount.setOnClickListener(新View.OnClickListener(){             @覆盖             公共无效的onClick(视图v){                 // TODO自动生成方法存根                 意向意图=新的意图(getActivity()                         CreateAccountActivity.class);                 startActivity(意向);             }         });         dialogPrg =新ProgressDialog(getActivity());         dialogPrg.setCanceledOnTouchOutside(假);         返回查看;     }     @覆盖     公共无效的onCreate(包savedInstanceState){         super.onCreate(savedInstanceState);   // uiHelper =新UiLifecycleHelper(getActivity(),回调);   // uiHelper.onCreate(savedInstanceState);     } //需要改变     私人Session.StatusCallback回调=新Session.StatusCallback(){         @覆盖         公共无效电话(最后一届会议,最后SessionState会的状态,                          最终的异常除外){             onSessionStateChange(会话,状态除外);         }     };     //需要改变END     私人无效onSessionStateChange(会话的会话,SessionState会的状态,                                       例外的例外){         如果(state.isOpened()){             Log.i(FB AUT片段,已登录......);         }否则如果(state.isClosed()){             Log.i(FB AUT片段,注销...);         }     }     //需要改变     私人无效insertUser(会话的会话){         Request.newMeRequest(会话,新GraphUserCallback(){             @覆盖             公共无效onCompleted(GraphUser用户,响应响应){                 // TODO自动生成方法存根                 新facebookUserCheck(用户)。开始();             }         })executeAsync()。     }     //需要改变END     //需要改变     私有类facebookUserCheck继承Thread {         GraphUser用户;         公共facebookUserCheck(GraphUser用户){             // TODO自动生成构造函数存根             this.user =用户;         }         //需要改变         @覆盖         公共无效的run(){             // TODO自动生成方法存根             super.run();             // TODO自动生成方法存根             字符串handleInsertUser = getActivity()。getResources()的getString(                     R.string.users_json_url)                     +facebook_user_check;             尝试 {                 HttpClient的客户端=新DefaultHttpClient();                 HttpPost后=新HttpPost(handleInsertUser);                 MultipartEntity reqEntity =新MultipartEntity(); //需要改变user.getId                                  reqEntity.addPart(fb_id,新StringBody(user.getId())); //需要改变END                                  post.setEntity(reqEntity);                 HTT presponse解析度= client.execute(后);                 HttpEntity resEntity = res.getEntity();                 最后弦乐response_str = EntityUtils.toString(resEntity);                 如果(resEntity!= NULL){                     Log.i(TAG,response_str);                     getActivity()。runOnUiThread(新的Runnable(){                         公共无效的run(){                             尝试 {                                 dialogPrg.dismiss();                                 JSONArray jsonArray =新JSONArray(                                         response_str);                                 如果(jsonArray.length()== 1){                                     的JSONObject物镜= jsonArray.getJSONObject(0);                                     用户USER = Ultils.parseUser(OBJ);                                     UserSessionManager userSession =新UserSessionManager(                                             getActivity());                                     userSession.storeUserSession(用户);                                     意向意图=新的意图(getActivity()                                             HomeActivity.class);                                     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK                                             | Intent.FLAG_ACTIVITY_NEW_TASK);                                     startActivity(意向);                                 }                             }赶上(例外五){                                 LayoutInflater充气= LayoutInflater                                         。从(getActivity());                                 查看promptsView = inflater.inflate(                                         R.layout.username_promtps_layout,NULL);                                 AlertDialog.Builder alertDialogBu​​ilder =新AlertDialog.Builder(                                         getActivity());                                 //设置prompts.xml为alertdialog建设者                                 alertDialogBu​​ilder.setView(promptsView);                                 最后的EditText消息=(EditText上)promptsView                                         .findViewById(R.id.editTextDialogUserInput);                                 alertDialogBu​​ilder                                         .setMessage(getResources()的getString(                                                 R.string.choose_your_user_name));                                 //设置对话框消息                                 alertDialogBu​​ilder                                         .setCancelable(假)                                         .setPositiveButton(                                                 getResources()。的getString(                                                         R.string.ok_label)                                                 新DialogInterface.OnClickListener(){                                                     公共无效的onClick(                                                             DialogInterface对话框,                                                             INT编号){                                                         如果(!验证                                                                 .validUserName(消息                                                                         .getText()                                                                         的ToString())){                                                             的ShowDialog(getResources()                                                                     .getString(                                                                             R.string.invalid_user_name));                                                             返回;                                                         }                                                         的userName =消息                                                                 .getText()                                                                 的ToString();                                                         新facebookUserRegister(                                                                 用户)。开始();                                                     }                                                 });                                 //创建警报对话框                                 AlertDialog alertDialog = alertDialogBu​​ilder                                         。创建();                                 // 展示下                                 alertDialog.show();                             }                         }                     });                 }             }赶上(例外五){                 // TODO:处理异常                 e.printStackTrace();             }         }     }     //需要改变          私有类facebookUserRegister继承Thread {         GraphUser用户;         公共facebookUserRegister(GraphUser用户){             // TODO自动生成构造函数存根             this.user =用户;         }         //需要改变END                                    @覆盖         公共无效的run(){             super.run();             getActivity()。runOnUiThread(新的Runnable(){                 @覆盖                 公共无效的run(){                     // TODO自动生成方法存根                     dialogPrg.show();                 }             });             字符串handleInsertUser = getActivity()。getResources()的getString(                     R.string.users_json_url)                     +facebook_user_register;             尝试 {                 HttpClient的客户端=新DefaultHttpClient();                 HttpPost后=新HttpPost(handleInsertUser);                 MultipartEntity reqEntity =新MultipartEntity();                 //需要改变user.getId,user.getName,user.asMap                                  reqEntity.addPart(fb_id,新StringBody(user.getId()));                 reqEntity.addPart(全名,新StringBody(user.getName()));                 reqEntity.addPart(电子邮件,新StringBody(user.asMap()获得(电子邮件)的toString()));                 //需要改变END                 reqEntity.addPart(用户名,新StringBody(用户名));                 post.setEntity(reqEntity);                 HTT presponse解析度= client.execute(后);                 HttpEntity resEntity = res.getEntity();                 最后弦乐response_str = EntityUtils.toString(resEntity);                 如果(resEntity!= NULL){                     Log.i(TAG,response_str);                     getActivity()。runOnUiThread(新的Runnable(){                         公共无效的run(){                             尝试 {                                 dialogPrg.dismiss();                                 JSONObject的jsonObj =新的JSONObject(                                         response_str);                                 如果(jsonObj.getString(正常)。等于(0)){                                     //显示错误的电子邮件;                                     的ShowDialog(getActivity()。getResources()                                             .getString(R.string.email_exist));                                     返回;                                 }                                 如果(jsonObj.getString(正常)。等于(1)){                                     //显示错误的用户名                                     的ShowDialog(getActivity()                                             .getResources()                                             .getString(R.string.user_name_exist));                                     返回;                                 }                                 如果(jsonObj.getString(正常)。等于(2)){                                     //显示未知的用户名                                     的ShowDialog(getActivity()。getResources()                                             .getString(R.string.login_failed));                                     返回;                                 }                             }赶上(例外五){                                 JSONArray jsonArray;                                 尝试 {                                     jsonArray =新JSONArray(response_str);                                     如果(jsonArray.length()== 1){                                         JSONObject的OBJ = jsonArray                                                 .getJSONObject(0);                                         用户USER = Ultils.parseUser(OBJ);                                         UserSessionManager userSession =新UserSessionManager(                                                 getActivity());                                         userSession.storeUserSession(用户);                                         意向意图=新的意图(                                                 getActivity(),                                                 HomeActivity.class);                                         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK                                                 | Intent.FLAG_ACTIVITY_NEW_TASK);                                         startActivity(意向);                                     }                                 }赶上(JSONException E1){                                     // TODO自动生成的catch块                                     e1.printStackTrace();                                     的ShowDialog(getActivity()。getResources()                                             .getString(R.string.login_failed));                                 }                             }                         }                     });                 }             }赶上(例外五){                 // TODO:处理异常                 e.printStackTrace();             }         }     }     //需要改变         @覆盖     公共无效onResume(){         super.onResume();         会话会话= Session.getActiveSession();         如果(会话= NULL和放大器;!及(session.isOpened()|| session.isClosed())){             onSessionStateChange(会话,session.getState(),NULL);         }       // uiHelper.onResume();     }     //需要改变END                    @覆盖     公共无效onActivityResult(INT申请code,INT结果code,意图数据){         super.onActivityResult(要求code,因此code,数据);         //新的Facebook添加         callbackManager.onActivityResult(要求code,因此code,数据);         //新的Facebook加入END       // uiHelper.onActivityResult(要求code,因此code,数据); //需要改变         如果(Session.getActiveSession()!=空                 &功放;&安培; Session.getActiveSession()。isOpened()){             dialogPrg.setMessage(getActivity()。getResources()的getString(                     R.string.loging));             dialogPrg.show();             facebookLoginButton.setEnabled(假);             insertUser(Session.getActiveSession());         }     } //需要改变END                              @覆盖     公共无效的onPause(){         super.onPause();       // uiHelper.onPause();     }     @覆盖     公共无效的onDestroy(){         super.onDestroy();       // uiHelper.onDestroy();     }     @覆盖     公共无效的onSaveInstanceState(包outState){         super.onSaveInstanceState(outState);        // uiHelper.onSaveInstanceState(outState);     }     公共无效的ShowDialog(字符串消息){         Ultils.logout(getActivity());         AlertDialog.Builder buidler =新AlertDialog.Builder(getActivity());         buidler.setMessage(消息);         buidler.setPositiveButton(                 getActivity()。getResources()的getString(R.string.ok_label)                 新DialogInterface.OnClickListener(){                     @覆盖                     公共无效的onClick(DialogInterface对话,诠释它){                         // TODO自动生成方法                         // 存根                         facebookLoginButton.setEnabled(真正的);                     }                 });         AlertDialog对话框= buidler.create();         dialog.show();     } }

解决方案

正如你可以在的 Facebook的SDK为一款Android更新日志4.0 - 2015年3月25日的UiLifecycleHelper被删除,它的功能转移到CallbackManager

<一个href="http://$c$c.tutsplus.com/tutorials/quick-tip-add-facebook-login-to-your-android-app--cms-23837"相对=nofollow>这里是一个教程,说明如何实现与Facebook SDK登录4.0。

I hope anybody can help me ! I want to change my code for the new facebook sdk 4.0 but there is only a little description and i´m getting crazy and don´t know how to make the new code with facebook login button and accesstoken

target of this code is that the user logs in with his facebook account and checks if the user already exits. if not then insert new user with email and facebook id and name

I have marked the codes with //needs to be changed and //needs to be changed END

Thanx in advance for any help !!!

import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
// import com.facebook.Request;
//import com.facebook.Request.GraphUserCallback;
// import com.facebook.Response;
// import com.facebook.Session;
// import com.facebook.SessionState;
//import com.facebook.UiLifecycleHelper;
// import com.facebook.model.GraphUser;
// import com.facebook.widget.LoginButton;

@SuppressLint("NewApi")
public class AuthenticationFragment extends Fragment {
    LoginButton facebookLoginButton;
  //   private UiLifecycleHelper uiHelper;
    String TAG = "Fragment";
    Button btnLogin, btnCreateAccount;
    ProgressDialog dialogPrg;
    String userName = null;

    // New Facebook Added
    CallbackManager callbackManager;


    public static final AuthenticationFragment newInstance() {
        // TODO Auto-generated constructor stub
        AuthenticationFragment fragment = new AuthenticationFragment();
        return fragment;
    }

    @Override
    public void onAttach(Activity activity) {
        // TODO Auto-generated method stub
        super.onAttach(activity);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view = inflater.inflate(R.layout.authentication_layout, container,
                false);
        facebookLoginButton = (LoginButton) view
                .findViewById(R.id.btnFacebookLogin);
        facebookLoginButton.setFragment(this);
        facebookLoginButton.setReadPermissions(Arrays.asList("email"));


       // New added for Facebook

        // Callback registration
        facebookLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                // App code

                //login ok  get access token
                AccessToken.getCurrentAccessToken();


            }

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



                Log.i(TAG, "facebook login canceled");
            }

            @Override
            public void onError(FacebookException exception) {
                // App code

                Log.i(TAG, "facebook login failed error");
            }
        });
        //New added for Facebook END






        btnLogin = (Button) view.findViewById(R.id.btn_login);
        btnCreateAccount = (Button) view.findViewById(R.id.btn_create_account);
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), LoginActivity.class);
                startActivity(intent);
            }
        });
        btnCreateAccount.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(getActivity(),
                        CreateAccountActivity.class);
                startActivity(intent);
            }
        });
        dialogPrg = new ProgressDialog(getActivity());
        dialogPrg.setCanceledOnTouchOutside(false);
        return view;
    }

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


  //    uiHelper = new UiLifecycleHelper(getActivity(), callback);
  //     uiHelper.onCreate(savedInstanceState);



    }







// Needs to be changed

    private Session.StatusCallback callback = new Session.StatusCallback() {
        @Override
        public void call(final Session session, final SessionState state,
                         final Exception exception) {
            onSessionStateChange(session, state, exception);
        }
    };

    // Needs to be changed END



    private void onSessionStateChange(Session session, SessionState state,
                                      Exception exception) {
        if (state.isOpened()) {
            Log.i("FB AUT FRAGMENT", "Logged in...");
        } else if (state.isClosed()) {
            Log.i("FB AUT FRAGMENT", "Logged out...");
        }
    }


    // Needs to be changed

    private void insertUser(Session session) {
        Request.newMeRequest(session, new GraphUserCallback() {
            @Override
            public void onCompleted(GraphUser user, Response response) {
                // TODO Auto-generated method stub
                new facebookUserCheck(user).start();
            }
        }).executeAsync();
    }

    // Needs to be changed END


    // Needs to be changed

    private class facebookUserCheck extends Thread {
        GraphUser user;

        public facebookUserCheck(GraphUser user) {
            // TODO Auto-generated constructor stub
            this.user = user;
        }

        // Needs to be changed



        @Override
        public void run() {
            // TODO Auto-generated method stub
            super.run();
            // TODO Auto-generated method stub
            String handleInsertUser = getActivity().getResources().getString(
                    R.string.users_json_url)
                    + "facebook_user_check";
            try {
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost(handleInsertUser);
                MultipartEntity reqEntity = new MultipartEntity();


// Needs to be changed   user.getId 
                
                reqEntity.addPart("fb_id", new StringBody(user.getId()));
// Needs to be changed END 
                

                post.setEntity(reqEntity);
                HttpResponse res = client.execute(post);
                HttpEntity resEntity = res.getEntity();
                final String response_str = EntityUtils.toString(resEntity);
                if (resEntity != null) {
                    Log.i(TAG, response_str);
                    getActivity().runOnUiThread(new Runnable() {
                        public void run() {
                            try {
                                dialogPrg.dismiss();
                                JSONArray jsonArray = new JSONArray(
                                        response_str);
                                if (jsonArray.length() == 1) {
                                    JSONObject obj = jsonArray.getJSONObject(0);
                                    User user = Ultils.parseUser(obj);
                                    UserSessionManager userSession = new UserSessionManager(
                                            getActivity());
                                    userSession.storeUserSession(user);
                                    Intent intent = new Intent(getActivity(),
                                            HomeActivity.class);
                                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK
                                            | Intent.FLAG_ACTIVITY_NEW_TASK);
                                    startActivity(intent);
                                }
                            } catch (Exception e) {
                                LayoutInflater inflater = LayoutInflater
                                        .from(getActivity());
                                View promptsView = inflater.inflate(
                                        R.layout.username_promtps_layout, null);

                                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                                        getActivity());

                                // set prompts.xml to alertdialog builder
                                alertDialogBuilder.setView(promptsView);

                                final EditText message = (EditText) promptsView
                                        .findViewById(R.id.editTextDialogUserInput);
                                alertDialogBuilder
                                        .setMessage(getResources().getString(
                                                R.string.choose_your_user_name));
                                // set dialog message
                                alertDialogBuilder
                                        .setCancelable(false)
                                        .setPositiveButton(
                                                getResources().getString(
                                                        R.string.ok_label),
                                                new DialogInterface.OnClickListener() {
                                                    public void onClick(

                                                            DialogInterface dialog,
                                                            int id) {
                                                        if (!Validator
                                                                .validUserName(message
                                                                        .getText()
                                                                        .toString())) {
                                                            showDialog(getResources()
                                                                    .getString(
                                                                            R.string.invalid_user_name));
                                                            return;
                                                        }
                                                        userName = message
                                                                .getText()
                                                                .toString();
                                                        new facebookUserRegister(
                                                                user).start();
                                                    }
                                                });

                                // create alert dialog
                                AlertDialog alertDialog = alertDialogBuilder
                                        .create();

                                // show it
                                alertDialog.show();
                            }
                        }
                    });
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    }

    // Needs to be changed
    
    private class facebookUserRegister extends Thread {
        GraphUser user;

        public facebookUserRegister(GraphUser user) {
            // TODO Auto-generated constructor stub
            this.user = user;
        }

        // Needs to be changed END
        
        
        
        @Override
        public void run() {
            super.run();
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    dialogPrg.show();
                }
            });
            String handleInsertUser = getActivity().getResources().getString(
                    R.string.users_json_url)
                    + "facebook_user_register";
            try {
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost(handleInsertUser);
                MultipartEntity reqEntity = new MultipartEntity();


                // Needs to be changed user.getId, user.getName, user.asMap
                
                reqEntity.addPart("fb_id", new StringBody(user.getId()));
                reqEntity.addPart("fullname", new StringBody(user.getName()));
                reqEntity.addPart("email", new StringBody(user.asMap().get("email").toString()));
                // Needs to be changed  END


                reqEntity.addPart("username", new StringBody(userName));
                post.setEntity(reqEntity);
                HttpResponse res = client.execute(post);
                HttpEntity resEntity = res.getEntity();
                final String response_str = EntityUtils.toString(resEntity);
                if (resEntity != null) {
                    Log.i(TAG, response_str);
                    getActivity().runOnUiThread(new Runnable() {
                        public void run() {
                            try {
                                dialogPrg.dismiss();
                                JSONObject jsonObj = new JSONObject(
                                        response_str);
                                if (jsonObj.getString("ok").equals("0")) {
                                    // show error email;
                                    showDialog(getActivity().getResources()
                                            .getString(R.string.email_exist));
                                    return;
                                }

                                if (jsonObj.getString("ok").equals("1")) {
                                    // show error username
                                    showDialog(getActivity()
                                            .getResources()
                                            .getString(R.string.user_name_exist));
                                    return;
                                }

                                if (jsonObj.getString("ok").equals("2")) {
                                    // show unknow username
                                    showDialog(getActivity().getResources()
                                            .getString(R.string.login_failed));
                                    return;
                                }

                            } catch (Exception e) {
                                JSONArray jsonArray;
                                try {
                                    jsonArray = new JSONArray(response_str);
                                    if (jsonArray.length() == 1) {
                                        JSONObject obj = jsonArray
                                                .getJSONObject(0);
                                        User user = Ultils.parseUser(obj);
                                        UserSessionManager userSession = new UserSessionManager(
                                                getActivity());
                                        userSession.storeUserSession(user);
                                        Intent intent = new Intent(
                                                getActivity(),
                                                HomeActivity.class);
                                        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK
                                                | Intent.FLAG_ACTIVITY_NEW_TASK);
                                        startActivity(intent);
                                    }
                                } catch (JSONException e1) {
                                    // TODO Auto-generated catch block
                                    e1.printStackTrace();
                                    showDialog(getActivity().getResources()
                                            .getString(R.string.login_failed));
                                }

                            }
                        }
                    });
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    }


    // Needs to be changed
   
    @Override
    public void onResume() {
        super.onResume();


        Session session = Session.getActiveSession();
        if (session != null && (session.isOpened() || session.isClosed())) {
            onSessionStateChange(session, session.getState(), null);
        }

      //   uiHelper.onResume();
    }

    // Needs to be changed END
    
    
    
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // New Facebook added
        callbackManager.onActivityResult(requestCode, resultCode, data);
        //New Facebook added END



      //  uiHelper.onActivityResult(requestCode, resultCode, data);


// Needs to be changed

        if (Session.getActiveSession() != null
                && Session.getActiveSession().isOpened()) {
            dialogPrg.setMessage(getActivity().getResources().getString(
                    R.string.loging));
            dialogPrg.show();
            facebookLoginButton.setEnabled(false);
            insertUser(Session.getActiveSession());
        }
    }
// Needs to be changed END
    
    
    
    
    
    @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);
    }

    public void showDialog(String message) {
        Ultils.logout(getActivity());
        AlertDialog.Builder buidler = new AlertDialog.Builder(getActivity());
        buidler.setMessage(message);
        buidler.setPositiveButton(
                getActivity().getResources().getString(R.string.ok_label),
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method
                        // stub
                        facebookLoginButton.setEnabled(true);
                    }
                });
        AlertDialog dialog = buidler.create();
        dialog.show();
    }

}

解决方案

As you can read in the Facebook SDK for Android changelog in section 4.0 - March 25, 2015 the UiLifecycleHelper was removed and its functionality transferred to the CallbackManager.

Here is a tutorial which explains how to implement the login with facebook SDK 4.0.

这篇关于Android的登录与Facebook SDK 4.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆