Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Facebook sdk+;facebook.isSessionValid()不工作_Android_Facebook Sdk 3.0 - Fatal编程技术网

Android Facebook sdk+;facebook.isSessionValid()不工作

Android Facebook sdk+;facebook.isSessionValid()不工作,android,facebook-sdk-3.0,Android,Facebook Sdk 3.0,我已经检查了我的散列键。我做的所有事情都是按照Facebook所说的。现在我的Facebook.isSessionValid()不工作了,请在下面找到我使用的代码 package com.maintab; import java.io.IOException; import java.net.MalformedURLException; import org.apache.http.auth.MalformedChallengeException; import org.json.JSONObj

我已经检查了我的散列键。我做的所有事情都是按照Facebook所说的。现在我的Facebook.isSessionValid()不工作了,请在下面找到我使用的代码

package com.maintab;
import java.io.IOException;
import java.net.MalformedURLException;
import org.apache.http.auth.MalformedChallengeException;
import org.json.JSONObject;
import com.example.tesfragement.*;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;
import com.facebook.android.Util;
import android.os.Bundle;
import android.app.Fragment;
import android.service.textservice.SpellCheckerService.Session;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;


public class Login extends Fragment   {

    View view;
    ImageView loginbuttton,logoutbutton;
    String app_id="*************";

    Facebook fb=new Facebook(app_id);

    public Login() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view= inflater.inflate(R.layout.login, container, false);
        loginbuttton=(ImageView) view.findViewById(R.id.loinbutton);
        loginbuttton.setOnClickListener(btnClick);

        //here change the image according to session
        logoutbutton=(ImageView)view.findViewById(R.id.greenbutton);
        updateButtonImage();
        //here facebook cording will go
        //facebook fb=new Login()

        return view;
    }

    private void updateButtonImage()
    {
        if(fb.isSessionValid())
        {
            loginbuttton.setImageResource(R.drawable.log_out);
        }
        else
            loginbuttton.setImageResource(R.drawable.login_with_facebook);
    }

    ImageView.OnClickListener btnClick=new ImageView.OnClickListener()
    {



        @SuppressWarnings("deprecation")
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub



            // my code begins here  
            if(fb.isSessionValid())
            {
                //button close our session -log out of facebook
                Toast.makeText(getActivity(), "Session is valid", Toast.LENGTH_LONG);
                try{
                    fb.logout(getActivity());
                    updateButtonImage();
                }
                catch(MalformedURLException e)
                {

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
            else
            {
                //login to facebook
                fb.authorize(getActivity(),new DialogListener() {

                    @Override
                    public void onFacebookError(FacebookError e) {
                        // TODO Auto-generated method stub
                        Toast.makeText(getActivity(), "fbError",Toast.LENGTH_LONG).show();

                    }

                    @Override
                    public void onError(DialogError e) {
                        // TODO Auto-generated method stub
                        Toast.makeText(getActivity(), "onError",Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onComplete(Bundle values) {
                        // TODO Auto-generated method stub
                        updateButtonImage();
                    }

                    @Override
                    public void onCancel() {
                        // TODO Auto-generated method stub
                        Toast.makeText(getActivity(), "oncancel",Toast.LENGTH_LONG).show();
                    }
                });

            }

        }

    };

}

当用户第一次登录时,将令牌存储在sharepreference中,并使用该令牌跳过登录部分

            LinearLayout fb = (LinearLayout) layout.findViewById(R.id.fb);
        fb.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (facebook.getAccessToken() != null) {

                    //user is successfully logged in here,do your desire operation


                } else {
                    loginToFacebook();

                }
            }
        });


    public void loginToFacebook() {

    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (access_token != null) {
        facebook.setAccessToken(access_token);

        Log.d("FB Sessions", "" + facebook.isSessionValid());
    }

    if (expires != 0) {
        facebook.setAccessExpires(expires);
    }

    if (!facebook.isSessionValid()) {
        facebook.authorize(this,
                new String[] { "email", "publish_stream" },
                new DialogListener() {

                    @Override
                    public void onCancel() {
                        // Function to handle cancel event
                    }

                    @Override
                    public void onComplete(Bundle values) {
                        // Function to handle complete event
                        // Edit Preferences and update facebook acess_token
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token",
                                facebook.getAccessToken());
                        editor.putLong("access_expires",
                                facebook.getAccessExpires());
                        editor.commit();
                        Toast.makeText(c,
                                "Successfully Login", Toast.LENGTH_LONG)
                                .show();
                        pwindo.dismiss();

                        // Making Login button invisible

                    }

                    @Override
                    public void onError(DialogError error) {
                        // Function to handle error

                    }

                    @Override
                    public void onFacebookError(FacebookError fberror) {
                        // Function to handle Facebook errors
                        pwindo.dismiss();
                        Toast.makeText(c, "Facebook Error",
                                Toast.LENGTH_LONG).show();
                    }

                });
    }
}

当用户第一次登录时,将令牌存储在sharepreference中,并使用该令牌跳过登录部分

            LinearLayout fb = (LinearLayout) layout.findViewById(R.id.fb);
        fb.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (facebook.getAccessToken() != null) {

                    //user is successfully logged in here,do your desire operation


                } else {
                    loginToFacebook();

                }
            }
        });


    public void loginToFacebook() {

    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (access_token != null) {
        facebook.setAccessToken(access_token);

        Log.d("FB Sessions", "" + facebook.isSessionValid());
    }

    if (expires != 0) {
        facebook.setAccessExpires(expires);
    }

    if (!facebook.isSessionValid()) {
        facebook.authorize(this,
                new String[] { "email", "publish_stream" },
                new DialogListener() {

                    @Override
                    public void onCancel() {
                        // Function to handle cancel event
                    }

                    @Override
                    public void onComplete(Bundle values) {
                        // Function to handle complete event
                        // Edit Preferences and update facebook acess_token
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token",
                                facebook.getAccessToken());
                        editor.putLong("access_expires",
                                facebook.getAccessExpires());
                        editor.commit();
                        Toast.makeText(c,
                                "Successfully Login", Toast.LENGTH_LONG)
                                .show();
                        pwindo.dismiss();

                        // Making Login button invisible

                    }

                    @Override
                    public void onError(DialogError error) {
                        // Function to handle error

                    }

                    @Override
                    public void onFacebookError(FacebookError fberror) {
                        // Function to handle Facebook errors
                        pwindo.dismiss();
                        Toast.makeText(c, "Facebook Error",
                                Toast.LENGTH_LONG).show();
                    }

                });
    }
}

请解释一下mPrefs,mPrefs变量pleasemPrefs是sharePreference的一个对象,它将值存储为键值对。exp editor.putString(“访问令牌”,facebook.getAccessToken());这里的键是“access_token”值是facebook.getAccessToken()您可以在应用程序中的任何位置通过传递键访问值pwindo变量是什么?您能解释一下吗?这就是为什么我要求你输入所有代码。如果你这样做,它将对所有人都有用。谢谢。pWindows是我的弹出菜单。如果你尝试我的代码,那么你可以从代码中删除该行,一旦我的帖子在facebook上更新,我就关闭弹出窗口如何从当前会话中注销?请解释mPrefs,mPrefs变量pleasemPrefs是sharePreference的对象,它将值存储为键值对。exp editor.putString(“访问令牌”,facebook.getAccessToken());这里的键是“access_token”值是facebook.getAccessToken()您可以在应用程序中的任何位置通过传递键访问值pwindo变量是什么?您能解释一下吗?这就是为什么我要求你把所有的代码都放进去。如果你这样做,它将对所有人都有用。谢谢。pWindows是我的弹出菜单。如果你尝试我的代码,那么你可以从代码中删除该行,一旦我的帖子在facebook上更新,我就关闭弹出窗口如何从当前会话中注销?