Android Facebook SDK授权方法每次都显示对话框

时间:2011-02-17 06:36:28

标签: android facebook sdk single-sign-on

我正在编写一个应该将照片上传到Facebook的Android应用程序。

除了一件事,一切都很好。当我第一次调用Facebook.authorize()方法时,Facebook对话框显示了请求的权限和“允许”/“不允许”按钮。那没关系。但是当我在非常时间运行我的应用程序时,我得到了相同的对话框,但是显示我的应用程序已经允许的消息,并建议按下OK按钮。

有没有办法避免第二次对话?我应该在某些情况下跳过授权方法吗?

我尝试在授权方法之前调用Facebook.isSessionValid()方法,但这没有帮助。

这是我的简化代码:

    mFacebook = new Facebook(APPLICATION_ID);
    mFacebookAsync = new AsyncFacebookRunner(mFacebook);

    if (mFacebook.isSessionValid()) {
        uploadPictureFile();
    }
    else {
        mFacebook.authorize(this, new String[] {"publish_stream"}, new Facebook.DialogListener() {

            @Override
            public void onFacebookError(FacebookError e) {
                Toast.makeText(PhotoFeederFacebookSendActivity.this, "Facebook error: " + e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
                finishWithResultCode(RESULT_CANCELED);
            }

            @Override
            public void onError(DialogError e) {
                Toast.makeText(PhotoFeederFacebookSendActivity.this, "Facebook dialog error: " + e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
                finishWithResultCode(RESULT_CANCELED);
            }

            @Override
            public void onComplete(Bundle values) {
                uploadPictureFile();
            }

            @Override
            public void onCancel() {Toast.makeText(PhotoFeederFacebookSendActivity.this, "Facebook authorization cancelled.", Toast.LENGTH_LONG).show();
                finishWithResultCode(RESULT_CANCELED);
            }
        });
    }

这是我的onActivityResult方法:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        mFacebook.authorizeCallback(requestCode, resultCode, data);
    }

任何帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:6)

您需要在mFacebook.setAccessToken("your token")之前致电mFacebook.isSessionValid() 并且您需要自己将令牌保存到首选项

答案 1 :(得分:0)

如果您只想更新状态,请在此处查看我的帖子... Android Facebook Graph API to update status