Диалог друзей на Facebook не работает на мобильном телефоне
Пролог:
У меня примерно такая же проблема, как описано в ранее заданном вопросе ( диалог FB для добавления друга на мобильном телефоне не работает).
Но так как нет реального решения этой проблемы, о чем стало известно, кроме комментария:
"это начало работать... Я ничего не изменил." [...] ( dinodsaurus)
Я спрашиваю это снова. С некоторой дополнительной информацией, специфичной для моего случая.
Я использую диалог друзей на Facebook, перенаправляя (302) на URL-адрес, например: ( https://www.facebook.com/dialog/friends/?id=3500194&app_id=531355753613866&redirect_uri=http%3A%2F%2Fstackru.com%2Fquestions%2F19403197%2Ffacebook-friend-dialog-not-working-on-mobile%23success)
Приведенный выше URL отлично работает как на настольном, так и на мобильном браузере.
Facebook автоматически перенаправляет ранее упомянутый URL на свой m.facebook.com
домен при использовании мобильного устройства / браузера. Это делает display=touch
версия диалога ( см. ссылку на диалог).
Это все кажется очень нормальным (и на самом деле желаемое поведение).
Но... происходит сбой, когда я подтверждаю, что хочу отправить запрос на добавление в друзья. И только когда я подтверждаю это с помощью мобильного устройства.
Сообщение, которое я получаю после подтверждения на моем мобильном телефоне:
"Извините, что-то пошло не так.
Мы работаем над тем, чтобы проблема была устранена как можно скорее."
(Обязательно используйте браузер вашего телефона по приведенной выше ссылке или непосредственно посетите m.facebook.com
используя эту ссылку, чтобы воспроизвести ошибку.)
Хорошо, так что я ждал два дня, так как я отправил отчет об ошибке (я обнаружил, что я действительно не сделал это правильно, но я думаю, что он уже был подан ранее) для этой ошибки в Facebook, и кажется, что нет никакого исправления. Также мне кажется, что маловероятно, что они оставят это сломанным так долго. Если...
Главный вопрос:
Итак, мой вопрос на самом деле: кто-нибудь знает какие-либо причины, по которым Facebook может иметь, возможно, не исправить эту ошибку? И если так, есть ли способ обойти это, все еще используя разумный стиль отображения для мобильных устройств?
Примеры решений очень приветствуются...;)
Редактировать:
Я только что подал Repro для этой ошибки. Если вы можете воспроизвести ошибку, которую я описал здесь, пожалуйста, отправьте Repro самостоятельно по адресу: https://developers.facebook.com/bugs/309157325894924 чтобы придать этой ошибке больший приоритет.
2 ответа
Facebook решил, что ошибка не имеет приоритета, и изменил статус на "Не будет исправлено" 7 декабря 2013 года.
Исходный отчет об ошибке был помечен как дубликат https://developers.facebook.com/x/bugs/309157325894924/. Смотрите эту страницу для получения дополнительной информации.
Я думаю, что это позор, и я все еще хотел бы убедить любого, кто думает то же самое, открыть новый отчет об ошибке для этой проблемы. Или оставьте комментарий к сообщению, указанному выше. Поскольку это, кажется, единственный способ создать ощущение срочности для решения этой проблемы.
PS: Я рекомендую отчет об ошибке, так как мои комментарии были удалены в последнее время.
PS2: Даже мой отчет об ошибке "заявить, что проблема не решена в документации", похоже, игнорируется. Таким образом, каждый день новые люди будут исследовать возможности мобильного веб-приложения с подключением к Facebook и ошибочно предположить, что они могут использовать "диалог друзей на Facebook" в своем веб-приложении на мобильных устройствах. Я надеюсь, что они найдут эту страницу во время своих исследований и откажутся от этого предположения.
В ответ на этот вопрос Wimagguc вы можете попробовать это:-
Основная проблема заключается в том, что API Facebook еще не готов для всех типов отображения, и диалоговое окно друзей не может быть отображено для отображения на мобильном устройстве.
protected static String DIALOG_BASE_URL = "https://m.facebook.com/dialog/";
protected static String DIALOG_BASE_URL_FOR_MISSING_SCREENS = "https://www.facebook.com/dialog/";
public void dialog(Context context, String action, Bundle parameters,
final DialogListener listener) {
boolean missingScreen = action.contentEquals("friends") ? true : false;
String endpoint = missingScreen ? DIALOG_BASE_URL_FOR_MISSING_SCREENS : DIALOG_BASE_URL;
endpoint += action;
parameters.putString("display", missingScreen ? "popup" : "touch");
parameters.putString("redirect_uri", REDIRECT_URI);
if (action.equals(LOGIN)) {
parameters.putString("type", "user_agent");
parameters.putString("client_id", mAppId);
} else {
parameters.putString("app_id", mAppId);
}
if (isSessionValid()) {
parameters.putString(TOKEN, getAccessToken());
}
String url = endpoint + "?" + Util.encodeUrl(parameters);
if (context.checkCallingOrSelfPermission(Manifest.permission.INTERNET)
!= PackageManager.PERMISSION_GRANTED) {
Util.showAlert(context, "Error",
"Application requires permission to access the Internet");
} else {
new FbDialog(context, url, listener).show();
}
}