Ошибка HTTP 500, когда пользователь не вошел в Facebook на Windows Phone 7 - PullRequest
3 голосов
/ 11 сентября 2011

Я настроил свое приложение Silverlight WP7 на использование элемента управления WebBrowser, чтобы пользователи могли входить в Facebook и предоставлять разрешения для дальнейших действий. После того, как пользователь предоставил разрешения, они перенаправляются на веб-страницу, сообщая им, что разрешения были предоставлены.

Цепочка выглядит следующим образом:

Приложение -> открывает элемент управления WebBrowser на веб-службе # 1 -> веб-служба перенаправляет на FB -> Предоставленные разрешения -> FB перенаправляет на веб-службу # 2, которая возвращает представление.

Оба веб-сервиса находятся в рамках проекта MVC, размещенного извне.

Это все работает нормально, ЕСЛИ пользователь не вошел в facebook - вместо того, чтобы перевести их на страницу входа в Facebook, как вы ожидаете, я просто получаю внутреннюю ошибку сервера HTTP 500 и веб-служба № 2 не работает. Если пользователь вошел в систему, то все будет работать как надо.

Я также упомяну, что это ТОЛЬКО происходит на устройстве WP7 и не происходит ни в одном браузере, включая IE9, на моем ноутбуке.

РЕДАКТИРОВАТЬ : Для ясности, веб-браузеры на моем ноутбуке были протестированы путем установки точки останова до вызова моего элемента управления WebBrowser в Visual Studio, я взял созданный там Uri и вставил его в Chrome , IE9 и т. Д.

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

Ответы [ 2 ]

3 голосов
/ 07 октября 2011

Этот код вызывает проблему.

// Constants.URL_FACEBOOK_LOGIN contains the parameter "display=touch|wap"
_popUpBrowser.Navigate(new Uri(Constants.URL_FACEBOOK_LOGIN));

Этот код решает проблему.

// Constants.URL_FACEBOOK_LOGIN contains the parameter "display=touch|wap"
string userAgent = "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7";
_popUpBrowser.Navigate(new Uri(Constants.URL_FACEBOOK_LOGIN), null, userAgent);

Почему?

Поскольку в настоящее время Facebook имеет проблему со значением агента пользователя Windows Phone 7 и значениями параметров отображения «touch» и «wap», когда они присутствуют в одном запросе. Поэтому простая отправка альтернативного заголовка User-Agent при использовании элемента управления WebBrowser решает проблему на данный момент.

Надеюсь, это поможет другим разработчикам Windows Phone 7, которые сталкиваются с неприятной ошибкой 500 при взаимодействии с API Graph Facebook.

1 голос
/ 12 сентября 2011

Я выяснил проблему и пришел к нежелательному решению - однако любое решение лучше, чем ошибка HTTP 500.

Проблема была с параметром диалога "display" в Facebook. Поскольку мое приложение предназначено для WP7, я передал «display = touch» в Facebook при проверке разрешений - однако это НЕ БУДЕТ РАБОТАТЬ! Я не знаю почему, но это стало причиной моей ошибки. Когда я убрал этот параметр, я перестал получать сообщение об ошибке - однако используется полный стиль рабочего стола, что нежелательно.

Кажется, что display = touch и display = wap дают ошибку HTTP 500. 'popup' и 'page' оба работают. Я не проверял «Ифраме». Так что пока я буду придерживаться «всплывающего окна».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...