Android的:不能从Facebook注销并通过状态 [英] Android:Cannot logout from facebook and pass status

查看:151
本文介绍了Android的:不能从Facebook注销并通过状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题1:当我点击登录按钮,我可以登录,给status.but当我preSS注销按钮不logout.So,我将如何从Facebook注销

Problem1:When i click login button i can log in,give status.but when i press logout button it does not logout.So,how will i logout from facebook?

Problem2:我有一个字符串str.I想要将它传递Facebook的文本字段(如我们所意图发送消息)。如何将我这样做

Problem2:I got a string str.I want to pass it in facebook's textfield (like we send messages by intent).How will i do that.

主类:
       `

main class: `

public class MainActivity extends Activity {
private static String APP_ID = "xxxxxxx"; 

private Facebook facebook = new Facebook(APP_ID);
private AsyncFacebookRunner mAsyncRunner;
String FILENAME = "AndroidSSO_data";
private SharedPreferences mPrefs;

ImageButton btnFbLogin;
ImageButton btnFbLogout;
Button btnPostToWall;
String str="I want this to pass";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnFbLogin = (ImageButton) findViewById(R.id.btn_fblogin);
    btnFbLogout = (ImageButton) findViewById(R.id.btn_fbLogout);
    btnPostToWall = (Button) findViewById(R.id.btn_fb_post_to_wall);
    mAsyncRunner = new AsyncFacebookRunner(facebook);

    btnFbLogin.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d("Image Button", "button Clicked");
            loginToFacebook();
        }
    });


    btnFbLogout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d("Image Button", "button Clicked");
            logoutFromFacebook();
        }
    });

    btnPostToWall.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            postToWall();
        }
    });



}


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);

        btnFbLogin.setVisibility(View.INVISIBLE);

        btnFbLogout.setVisibility(View.VISIBLE);

        btnPostToWall.setVisibility(View.VISIBLE);



        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() {

                    }

                    @Override
                    public void onComplete(Bundle values) {
                        acess_token
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token",
                                facebook.getAccessToken());
                        editor.putLong("access_expires",
                                facebook.getAccessExpires());
                        editor.commit();


                        btnFbLogin.setVisibility(View.INVISIBLE);


                        btnFbLogout.setVisibility(View.VISIBLE);


                        btnPostToWall.setVisibility(View.VISIBLE);


                    }

                    @Override
                    public void onError(DialogError error) {


                    }

                    @Override
                    public void onFacebookError(FacebookError fberror) {


                    }

                });
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    facebook.authorizeCallback(requestCode, resultCode, data);
}





public void postToWall() {

    facebook.dialog(this, "feed", new DialogListener() {

        @Override
        public void onFacebookError(FacebookError e) {
        }

        @Override
        public void onError(DialogError e) {
        }

        @Override
        public void onComplete(Bundle values) {
        }

        @Override
        public void onCancel() {
        }
    });

}
public void logoutFromFacebook() {
    mAsyncRunner.logout(this, new RequestListener() {
        @Override
        public void onComplete(String response, Object state) {
            Log.d("Logout from Facebook", response);
            if (Boolean.parseBoolean(response) == true) {
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {

                        btnFbLogin.setVisibility(View.VISIBLE);


                        btnFbLogout.setVisibility(View.INVISIBLE);
                        btnPostToWall.setVisibility(View.INVISIBLE);
                    }

                });

            }
        }

        @Override
        public void onIOException(IOException e, Object state) {
        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                Object state) {
        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                Object state) {
        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
        }
    });
}

    }`

当我点击注销按钮它说:
`

when i click the logout button it says: `

      08-14 14:46:59.849: D/Image Button(284): button Clicked
      08-14 14:46:59.869: D/Facebook-Util(284): GET URL: https://api.facebook.com/restserver.php? method=auth.expireSession&format=json
      08-14 14:47:00.399: D/Logout from Facebook(284): {"error_code":101,"error_msg":"Invalid application ID.","request_args":[{"key":"method","value":"auth.expireSession"},{"key":"format","value":"json"}]}

`

推荐答案

使用此就为我工作

facebook.logout(this);

在Facebook的SDK Facebook.java

in Facebook SDK Facebook.java

public String logout(Context context) throws MalformedURLException, IOException {
   Util.clearCookies(context);
   Bundle b = new Bundle();
   b.putString("method", "auth.expireSession");
   String response = request(b);
   setAccessToken(null);
   setAccessExpires(0);
   return response;
}

这篇关于Android的:不能从Facebook注销并通过状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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