Facebook android SSO завершается, но активность закрывается без вызова onActivityResult () - PullRequest
4 голосов
/ 09 мая 2011

У меня проблема, как следует из названия. Я делаю вызов authorize (), но никогда не могу вызвать authorizeCallback (), потому что onActivityResult () никогда не вызывается. SSO завершается, потому что он показывает экран разрешений (с «Не разрешать / разрешать»), а утверждение приложения отображается на моей странице настроек Facebook. Есть идеи? Я думал, что это может иметь какое-то отношение к launchMode действия, но удалил «singleInstance», и это не имело никакого значения.

Как я упоминал выше, я могу подтвердить, что активность разрешений запущена в Facebook.java.

 try {
        Log.e("@@@", "Starting activity");
        activity.startActivityForResult(intent, activityCode);
    } catch (ActivityNotFoundException e) {
        didSucceed = false;
    }

Для чего я могу подтвердить код, указанный ниже.

Я реализовал метод authorizeCallback () в onActivityResult ():

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    mStateHolder.getFacebook().authorizeCallback(requestCode, resultCode, data);
}

.. но это никогда не называется. Метод авторизации, который я использовал, выглядит следующим образом:

facebook.authorize(this, new String[]{ "user_birthday" }, new DialogListener() {
        public void onComplete(Bundle values) {
            Log.e(TAG, "onComplete()");
            // I make a request here..
        }
        // ...with the other methods as well
}

Другая потенциально полезная информация:

У меня Nexus One, 2.3.4 Приложение Facebook установлено Это работает нормально, если я принудительно вызываю метод Dialog, но я пытаюсь заставить SSO работать.

РЕДАКТИРОВАТЬ: Ург! После долгих поисков я нашел проблему. В намерении был неестественный флаг Intent.FLAG_ACTIVITY_NO_HISTORY (который не сохраняет активность в стеке). Спасибо всем за попытку ответить.

EDIT2: удаление launchMode = singleInstance тоже имеет значение .. Я начал получать сообщение об ошибке «Не удалось прочитать подпись вызывающего пакета».

1 Ответ

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

Как вы завершаете свою аутентификацию? Вы должны установить тип результата и, возможно, отправить значение обратно. например:

Intent data = new Intent();
data.putExtra(ApplicationConstants.EXTRA_IS_DONE, true);
setResult(RESULT_OK, data);
finish();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...