Facebook登录不currectly工作 [英] Facebook login is not working currectly

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

问题描述

我的工作的应用程序中,我被困在一个问题。我使用了Facebook做日志
Facebook的SDK在我的应用程序中,授权人(通过我已经创造了例如​​在Facebook上)做日志成功,但是当其他人在做记录,然后他是不是能够登录(我想创建会话,但会话状态被关闭)现在我很困惑我做什么。我搜索了网页和阅读文档,但我的问题不解决,请帮我出这个问题。谢谢
我的code是低于

 公共类MainFragment扩展片段{    私有静态最后弦乐TAG =迪派;
    私人UiLifecycleHelper uiHelper;
    布尔isInternet present;
    私人TextView的albumTextView;
    私人静态字符串APP_ID =xxxxxxxxxxxxxxxxx;
    正在使用Facebook;
    会话的会话;
    私人布尔标志= FALSE;
    静态的ArrayList<串GT; allNames;
    静态的ArrayList<串GT; UID;
    静态的ArrayList<串GT; picUrl;//的String [] =图片新的String [] {};
//的String []的UID;
//的String [] allnames;    JSONArray jArray;    @覆盖
    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
         捆绑savedInstanceState){
        // TODO自动生成方法存根
         查看查看= inflater.inflate(R.layout.activity_main,集装箱,FALSE);
         LoginButton authButton =(LoginButton)view.findViewById(R.id.authButton);
         authButton.setReadPermissions(Arrays.asList(read_friendlists,user_photos,friends_photos));
         albumTextView =(TextView中)view.findViewById(R.id.text_viet_albul);
         authButton.setFragment(本);
         Facebook的=新的Facebook(APP_ID);
         allNames =新的ArrayList<串GT;();
         UID =新的ArrayList<串GT;();
         picUrl =新的ArrayList<串GT;();         ConnectionDetector CD =新ConnectionDetector(getActivity());
         isInternet present = cd.isConnectingToInternet();
         checkInternetConnection();         返回视图。
    }    私人无效checkInternetConnection(){
        // TODO自动生成方法存根
        如果(!isInternet present){
            //没有Internet连接present
            //要求用户连接到互联网
            showAlertDialog(getActivity(),无Internet连接,你没有互联网连接。,假);
            }
        }
     公共无效showAlertDialog(上下文的背景下,标题字符串,字符串消息,布尔状态){
         AlertDialog alertDialog =新AlertDialog.Builder(上下文).create();
         //设置对话框标题
         alertDialog.setTitle(职称);
         //设置对话框留言
         alertDialog.setMessage(消息);
         //设置警告对话框图标
         //alertDialog.setIcon((status)R.drawable.success:R.drawable.fail);
         //设置OK按钮
         alertDialog.setButton(OK,新DialogInterface.OnClickListener()
         {
             公共无效的onClick(DialogInterface对话,诠释其)
             {
                 MainActivity.finishIfNetworkIsNotWorking();
             }
         });
         //显示警报信息
         alertDialog.show();     }    私人无效onSessionStateChange(会话的会话,SessionState会状态,异常除外){
        如果(state.isOpened()){
            Log.i(TAG,已登录...);
        }否则如果(state.isClosed()){
            Log.i(TAG注销...);        }
    }    私人Session.StatusCallback回调=新Session.StatusCallback()
    {
        @覆盖
        公共无效呼叫(会话的会话,SessionState会状态,异常除外)
        {
            onSessionStateChange(会话,状态除外);        }
    };    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);        uiHelper =新UiLifecycleHelper(getActivity(),回调);
        uiHelper.onCreate(savedInstanceState);    }
    @覆盖
    公共无效onResume(){
        super.onResume();        会话的会话= Session.getActiveSession();
        如果(会话= NULL&放大器;!&安培;
               (session.isOpened()|| session.isClosed())){
            onSessionStateChange(会话,session.getState(),NULL);
        }
       uiHelper.onResume();
    }    @覆盖
    公共无效的onActivityResult(INT申请code,INT结果code,意图数据){
        super.onActivityResult(要求code,结果code,数据);
        uiHelper.onActivityResult(要求code,结果code,数据);
        Session.getActiveSession()的onActivityResult(getActivity(),请求code,结果code,数据)。
    }    @覆盖
    公共无效的onPause(){
        super.onPause();
        uiHelper.onPause();    }    @覆盖
    公共无效的onDestroy(){
        super.onDestroy();
        uiHelper.onDestroy();    }    @覆盖
    公共无效的onSaveInstanceState(捆绑outState){
        super.onSaveInstanceState(outState);
        uiHelper.onSaveInstanceState(outState);    }
}


解决方案

你不注销,当您更改用户?有时候你的令牌或会议每股preferences是储蓄,而当你运行你的应用程序从文件加载令牌和创建会话。
您的方法注销必须有如下:

 私人无效onClickLogout(){
    会话的会话= Session.getActiveSession();
    如果(!session.isClosed()){
        session.closeAndClearTokenInformation();
    }
}

你得到有效会话?

I am working an application in which i stuck in a problem. I am doing log in facebook using facebook sdk in my application in which authorize person(through which i have created example on facebook) doing log in successfully but when another person doing log in then he is not able to log in(i think session is created but session state is closed) now i am confused what i do. I searched over web and read the document but my problem is not solved please help me out this problem. thanks my code is below

 public class MainFragment extends Fragment{

    private static final String TAG = "deepak";
    private UiLifecycleHelper uiHelper;
    Boolean isInternetPresent;
    private TextView albumTextView;
    private static String APP_ID = "xxxxxxxxxxxxxxxxx";
    Facebook facebook;
    Session session;
    private boolean flag = false;
    static ArrayList<String> allNames;
    static  ArrayList<String> uid;
    static ArrayList<String> picUrl;

//    String[] pics =  new String[]{};
//    String[] uids;
//    String[] allnames;

    JSONArray jArray;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
         Bundle savedInstanceState) {
        // TODO Auto-generated method stub
         View view = inflater.inflate(R.layout.activity_main, container, false);
         LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
         authButton.setReadPermissions(Arrays.asList("read_friendlists", "user_photos", "friends_photos"));
         albumTextView = (TextView) view.findViewById(R.id.text_viet_albul);
         authButton.setFragment(this);
         facebook = new Facebook(APP_ID);
         allNames = new ArrayList<String>();
         uid = new ArrayList<String>();
         picUrl = new ArrayList<String>();

         ConnectionDetector cd = new ConnectionDetector(getActivity()); 
         isInternetPresent = cd.isConnectingToInternet();
         checkInternetConnection();

         return view;
    }

    private void checkInternetConnection() {
        // TODO Auto-generated method stub
        if(!isInternetPresent) {                    
            // Internet connection is not present                     
            // Ask user to connect to Internet                    
            showAlertDialog(getActivity(), "No Internet Connection", "You don't have internet connection.", false);                
            } 
        }


     public void showAlertDialog(Context context, String title, String message, Boolean status) {
         AlertDialog alertDialog = new AlertDialog.Builder(context).create();          
         // Setting Dialog Title         
         alertDialog.setTitle(title);           
         // Setting Dialog Message         
         alertDialog.setMessage(message);                   
         // Setting alert dialog icon         
         //alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);           
         // Setting OK Button         
         alertDialog.setButton("OK", new DialogInterface.OnClickListener() 
         {            
             public void onClick(DialogInterface dialog, int which)
             {    
                 MainActivity.finishIfNetworkIsNotWorking();
             }        
         });           
         // Showing Alert Message         
         alertDialog.show();     

     }

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

        }
    }

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

        }
    };

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

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

    }


    @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);
        Session.getActiveSession().onActivityResult(getActivity(), 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);

    }
} 

解决方案

Do you do log out when you change user? Sometimes your tokens or session is saving in share preferences, and when you run your app it load tokens from file and create your session. Your method log out must be like next:

 private void onClickLogout() {
    Session session = Session.getActiveSession();
    if (!session.isClosed()) {
        session.closeAndClearTokenInformation();
    }
}

Do you get active session?

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

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