Intereting Posts
Android SQLite – Cursor & ContentValues Открыть приложение с именем пакета с помощью ADB CrossWalk XWalkView (альтернатива Webview) не работает с AppBarLayout + CoordinatorLayout Создайте AAR, который зависит от множества AAR Воспроизведение видео на части экрана Как я могу получить окно активности стиля диалога, чтобы заполнить экран? Google maps api v2 ошибка памяти Как узнать, какой взгляд сосредоточен? Платформа Android: возможен ли пользовательский интерфейс для многократного использования? Как изменить цвет прогресса индикатора выполнения в Android Установить альфа / непрозрачность макета BitmapFactory.decodeResource и необъяснимый недостающий объем памяти Как читать атрибут пользовательского измерения из java-кода Почему посылка вызова программно дает сообщение об ошибке «Интернет-вызов не поддерживается»? Ложноположительная ошибка разрешения линт даже после запроса разрешения во время выполнения

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

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

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

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

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

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

Solutions Collecting From Web of "Как избежать авторизации в Android Facebook SDK"

То, как я это делал (без дополнительного решения 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, а уже разрешенный экран не появился. Спасибо.