Intereting Posts
Отправка изображений с помощью Http Post Как исправить ошибку «Ошибка при синхронизации vcpu reg»? Кнопка не меняет значение текстового вида Получить в реальном времени – не установить время в Android Как найти утечки памяти из собственного кода в android Перемещение видеофайла, снятого камерой с помощью кордовы (телефонная задержка), не освежает миниатюру галереи Тестирование использования батареи Значок меню Android с заголовком: заголовок не отображается Android: просмотр видео: как воспроизвести видео на петле Какой формат предназначен для камеры Android с необработанным PictureCallback? IAB consumePurchase () больше не работает для статического ответа android.test.purchased Настройка RatingBar с каждым элементом рейтинга увеличенного размера Как сделать снимок экрана на экране Android Surface View? Учебники или введение для написания простого языка сценариев? Остановите мое приложение от сна (Cordova / Android)

Как избежать авторизации в Android Facebook SDK

Я получаю совершенно бесполезную страницу, когда я использую Single Sign для Android SDK для Android.

«Вы уже разрешили happyapp. Нажмите« ОК », чтобы продолжить.

Эта страница уничтожит пользовательский интерфейс. Как я могу избавиться от этого. Многие люди это видели, но решение не опубликовано.

Даже Facebook признает, что это проблема, см .: http://forum.developers.facebook.net/viewtopic.php?id=84548

Кто-нибудь знает какую-нибудь работу?

То, как я это делал (без дополнительного решения OAuth), заключалось в том, чтобы сохранить токен доступа в предпочтениях, как предложил Кивели. Когда начинается основное действие, найдите токен из настроек, если он не инициирует процесс авторизации и сохраняет полученный токен в настройках.

Более сложная задача состоит в том, чтобы обрабатывать истечение срока действия токена или отмену авторизации вашего приложения (т. Е. Токен находится в настройках, но уже недействителен).

В этом случае при каждом вызове FB API / graph проверьте, не произошло ли исключение, указывающее на аутентификацию. Если это не удается, снова запустите процедуру авторизации / хранения токена.

Используя предложение здесь, это код, который работал для меня, надеюсь, что это поможет кому-то

Перед входом в систему

SharedPreferences prefs= PreferenceManager.getDefaultSharedPreferences(FacebookLogin.this); String access_token = prefs.getString("access_token", null); Long expires = prefs.getLong("access_expires", -1); if (access_token != null && expires != -1) { facebook.setAccessToken(access_token); facebook.setAccessExpires(expires); } if (!facebook.isSessionValid()) { facebook.authorize(FacebookLogin.this, new DialogListener() { ... 

После успешного входа в систему сделать это

 String token = facebook.getAccessToken(); long token_expires = facebook.getAccessExpires(); SharedPreferences prefs= PreferenceManager.getDefaultSharedPreferences(FacebookLogin.this); prefs.edit().putLong("access_expires", token_expires).commit(); prefs.edit().putString("access_token", token).commit(); 

Я столкнулся с этой проблемой после того, как любое устройство разрешило мое приложение с помощью facebook. Мой эмулятор продолжал работать отлично, но я не мог заставить телефон пройти «хороший» диалоговый экран и сделать что-нибудь значимое. Я добавил параметр facebook.FORCE_DIALOG_AUTH для вызова authorize (). Теперь он просит меня войти один раз на устройство и установить TOKEN и истечение в общих предпочтениях, как и должно быть.

 Button button_facebook = (Button) findViewById(R.id.button_share_on_facebook); button_facebook.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { if (access_token != null) { facebook.setAccessToken(access_token); } if (expires != 0) { facebook.setAccessExpires(expires); } if (!facebook.isSessionValid()) { facebook.authorize(YourActivity.this, new String[] { "user_photos,publish_checkins,publish_actions,publish_stream" }, facebook.FORCE_DIALOG_AUTH, new DialogListener() { @Override public void onComplete(Bundle values) { SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = mPrefs.edit(); editor.putString("access_token", facebook.getAccessToken()); editor.putLong("access_expires", facebook.getAccessExpires()); editor.commit(); postSomethingToFacebook(); } @Override public void onFacebookError(FacebookError e) { Log.e("Facebook-Authorize", "FacebookError Error: " + e.getMessage()); } @Override public void onError(DialogError e) { Log.e("Facebook-Authorize", "DialogError Error: " + e.getMessage()); } @Override public void onCancel() { Log.w("Facebook-Authorize", "Cancelled."); } }); } else { postSomethingToFacebook(); } }); 

Обход SDK и использование собственного решения OAuth. Сохраните токен доступа после его получения. Попробуйте использовать его напрямую, не отправляя пользователя на страницу разрешения на facebook. Как только токен истечет, вам понадобится предоставить разрешение снова. С расширенными функциями появляются обязанности более низкого уровня (и больше работы).

Если у вас нет приложения FB на вашем устройстве, всплывающее окно появится в вашем браузере Safari. Установите приложение FB на свое устройство и попробуйте войти в систему с помощью FB, а уже разрешенный экран не появился. Спасибо.