授权facebook权限后facebook不会打开

时间:2012-10-12 20:16:33

标签: android facebook

我按照API facebook指南,这是代码:

ib2 = (ImageButton) findViewById(R.id.imageButton2);

    list = new OnClickListener() {

        public void onClick(View v) {

             /*
             * Get existing access_token if any
             */
            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);
            }
            if(expires != 0) {
                facebook.setAccessExpires(expires);
            }

            /*
             * Only call authorize if the access_token has expired.
             */
            if(!facebook.isSessionValid()) {

                facebook.authorize(Answer.this, new String[] {"user_about_me","publish_checkins"}, new DialogListener() {
                    public void onComplete(Bundle values) {
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token", facebook.getAccessToken());
                        editor.putLong("access_expires", facebook.getAccessExpires());
                        editor.commit();
                    }

                    public void onFacebookError(FacebookError error) {}

                    public void onError(DialogError e) {}

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


    ib2.setOnClickListener(list); 

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

    facebook.authorizeCallback(requestCode, resultCode, data);
}

每个人都在正确的位置上有正确的声明。和...

第一次按下按钮上的Onclick,facebook要求我接受我的应用程序所需的权限。

但是...

我第二次在同一个按钮上执行Onclick时,Facebook窗口无法打开。为什么会那样?

如果我设置权限,我应该看到授权OK !!!

2 个答案:

答案 0 :(得分:1)

你有安装官方Facebook应用程序吗?因为如果你这样做,这是一个错误,我相信他们仍然没有修复。

我不知道这是不是问题,但您可以尝试强制对话:facebook.authorize(Answer.this, new String[] {"user_about_me","publish_checkins"}, Facebook.FORCE_DIALOG_AUTH, new DialogListener() {

我不太明白你在这里遇到了什么,所以请让我知道它是如何运作的。

答案 1 :(得分:0)

"The first time doing Onclick on the button, facebook ask me to accept the permissions     required for my app."

在这种情况下,由于这是您第一次使用Facebook登录应用程序,因此您的应用程序没有访问令牌并且过期

facebook.isSessionValid()=假

- > facebook.authorize()将运行

Facebook将要求您获得许可(因为您的Facebook会员之前从未允许您的应用)

但是第二次,

访问令牌和过期已保存到共享首选项, ==> facebook.isSessionValid()为true,

==> facebook.authorize()将无法运行

==>似乎已登录

因此Facebook窗口不会弹出。

如果您想再次看到Facebook弹出窗口,

1)清理应用的缓存

2)终止应用程序(共享首选项中的访问令牌将被清除)

然后你会看到一个facebook登录窗口弹出,但你不会看到预设页面,因为你已经允许你的应用程序(只需要允许一次)

如果您想再次查看Facebook权限页面,只需转到您的Facebook,转到隐私设置 - >广告,应用和网站 - >按编辑设置并取消授权您的APP。 然后将再次弹出Premission页面,以便您下次登录该应用程序