Intereting Posts
Как открыть приложение Twitter и Facebook с помощью Phonegap? Как я могу загрузить файл jar динамически в приложении Android (4.0.3) Google play, я случайно загрузил продукцию APK, теперь не могу бета-тестирование Где запускать сложные алгоритмы? Сторона сервера или клиента? Каковы различия между внутренним хранилищем, внешним хранилищем, SD-картой и съемным хранилищем? V.getTag () возвращает null вместо ViewHolder Как создать ссылку для всех мобильных устройств, которые открывают карты Google с маршрутом, начинающимся с текущего местоположения, определяющим данное место? Android Studio "Ошибка – не удалось сохранить проект: null" У указанного ребенка уже есть родитель Как загрузить изображение в виде изображения из галереи? Настроить категорию «Программы» программно Страница разработчика Android: понимание примера профилирования traceview Заполнение ListView с помощью ArrayList? Программно настроить PPTP / L2TP VPN на Android Передвижной ящик – отключить клик по элементам за выдвижным ящиком

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