2

我遵循 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 要求我接受我的应用程序所需的权限。

但...

我第二次在同一个按钮上单击时,facebook 窗口没有打开。为什么会这样?

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

4

2 回答 2

1

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

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

我不太明白你在这里遇到什么,所以请告诉我它是如何工作的。

于 2012-10-12T22:31:10.047 回答
0
"The first time doing Onclick on the button, facebook ask me to accept the permissions     required for my app."

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

facebook.isSessionValid()=false

-->facebook.authorize() 将运行

Facebook 会请求您的许可(因为您的 Facebook 帐户以前从未允许您的应用程序)

但第二次,

访问令牌和过期时间已保存到 sharepreference,==>facebook.isSessionValid() 为 true,

==>facebook.authorize() 不会运行

==>似乎已登录

所以facebook窗口不会弹出。

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

1) 清理应用的缓存

2)终止应用程序(sharepreference中的访问令牌将被清除)

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

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

于 2012-10-15T15:05:46.753 回答