Ошибка входа в Android Facebook sdk 1118578

все работало нормально, пока я не захотел проверить, что произойдет, если пользователь нажимает кнопку Войти с Facebook без подключения к интернету.

появился тост, говорящий:

ошибка входа. Пожалуйста, свяжитесь с создателем этого приложения и попросите их сообщить о выпуске #1118578 в Facebook.

в logcat у меня есть:

D / Facebook-авторизация (2824): вход отменен пользователь.

Я попытался избавиться от этого тоста и отобразить мое собственное сообщение об ошибке в onCancel() метод-но я не могу найти способ отключить этот тост. Когда я снова включил WiFi, единый вход больше не работал!

что может быть причиной этого?

    private void fbLogin() {
    facebook.authorize(this, new String[] { "email" }, new DialogListener() {
        @Override
        public void onComplete(Bundle values) {
            app.save("fb_token", facebook.getAccessToken());
            app.save("fb_expire", facebook.getAccessExpires());
            mAsyncRunner.request("me", new meRequestListener());
        }
        @Override
        public void onFacebookError(FacebookError error) {}
        @Override
        public void onError(DialogError e) {}
        @Override
        public void onCancel() {}
    });
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    facebook.authorizeCallback(requestCode, resultCode, data);
}

EDIT:

чтобы ответить на мой собственный вопрос, удаление android:launchMode="singleInstance" из манифеста в <activity> решена проблема #1118578.

тем не менее, мне нужно android:launchMode="singleInstance" для twitter OAuth войти, как браузер передает данные обратно к деятельности с помощью нового намерения. Если я не предоставлю android:launchMode="singleInstance" в манифесте запускается новое действие, и оно не получает верификатор OAuth.

есть ли способ обойти это, чтобы использовать Facebook и Twitter войти в той же деятельности? Единственное решение, которое я думаю, - использовать фиктивную активность для Twitter4j с singleInstance.

1 ответов


мой способ преодолеть это был путем изменения обратного вызова в twitter, от "twitter: / / обратный вызов" до "http://localhost/callback" и удалите android: launchMode= "singleInstance" и фильтр намерений twitter из манифеста.

Я все еще могу получить ответ в WebView (а не на onResume (), как раньше):

yourwebview.setWebViewClient(new WebViewClient() {
  @Override
  public void onPageFinished(WebView view, String url) {
    // your_callback == http://localhost/callback
    if(url == null || !url.startsWith(your_callback))
      return;

    Uri         uri = Uri.parse(url);
    String      ov  = uri.getQueryParameter("oauth_verifier");
    AccessToken at  = null;
    ...