Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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权限后,facebook don';t打开_Android_Facebook - Fatal编程技术网

Android 授权facebook权限后,facebook don';t打开

Android 授权facebook权限后,facebook don';t打开,android,facebook,Android,Facebook,我遵循API facebook指南,以下是代码: ib2 = (ImageButton) findViewById(R.id.imageButton2); list = new OnClickListener() { public void onClick(View v) { /* * Get existing access_token if any */ mPre

我遵循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); 

每个人都在正确的位置上,有正确的声明。而且

第一次点击按钮时,facebook要求我接受我的应用程序所需的权限

但是

第二次我点击同一个按钮时,facebook窗口不会打开。为什么会这样


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

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

我不知道这是否是问题所在,但您可以尝试强制执行该对话框:
facebook.authorize(Answer.this,新字符串[]{“user\u about\u me”,“publish\u checkins”},facebook.FORCE\u dialog\u AUTH,new DialogListener(){

我不太明白你在这里经历了什么,所以请让我知道它是如何工作的

"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,转到隐私设置-->广告、应用程序和网站-->按编辑设置,然后取消对应用程序的授权。
然后,Premission页面将再次弹出,供您下次登录该应用程序时使用

我知道,所以策略不是只发布“谢谢”,而是…抱歉策略“谢谢!”。如果应用程序在FB端得到授权,但在Android端没有运行,那么我不仅没有得到任何facebook窗口,而且它也只是..退出,没有任何机会陷阱或做任何其他事情。如果你问我,这是非常不理想的。因此,无论如何,按照你的建议进行了修改,并且由jove进行了很好的运行。最后..问题在哪里facebook SDK错误列表?我相信这不会是最后一个。我很高兴听到我可以帮助别人解决问题!我同意这是一个非常奇怪的错误,而且据我所知,这个解决方法可能不是最可靠的,但对我来说很有效。完整的错误列表可以在这里找到:developers.facebook.com/bugs/
"The first time doing Onclick on the button, facebook ask me to accept the permissions     required for my app."