Android Facebook SDK методы авторизации показывает диалог каждый раз - PullRequest
6 голосов
/ 17 февраля 2011

Я пишу приложение для Android, которое должно загружать фотографии в Facebook.

Все работает отлично, кроме одной вещи. Когда я впервые вызвал метод Facebook.authorize (), было показано диалоговое окно Facebook с запрошенными разрешениями и кнопками «Разрешить» / «Не разрешать». Это было хорошо. Но когда я запускаю свое приложение в течение второго времени, у меня появляется тот же диалог, но с сообщением, что мое приложение уже разрешено, и предложением нажать кнопку ОК.

Есть ли способ избежать этого второго диалога? Должен ли я пропустить метод авторизации в некоторых условиях?

Я пытался вызвать метод 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 ]

6 голосов
/ 22 февраля 2011

Вам необходимо позвонить mFacebook.setAccessToken("your token") до mFacebook.isSessionValid() и вам нужно сохранить токен, чтобы отдать предпочтение себе

0 голосов
/ 14 мая 2011

Если вы только собираетесь обновить статус, смотрите мой пост здесь ... Android Facebook Graph API для обновления статуса

...