API выхода из Facebook — Почему дальше?

Я пишу приложение для Windows Phone 7, и вход в Facebook работает с помощью C# sdk, но выход из системы оказался интересным. Я прочитал этот пост:

Невозможно выйти из Facebook с помощью Facebook C# SDK

который, кажется, отражает документы FB, которые указывают, что я должен перейти к

https://www.facebook.com/logout.php?next=[redirect_uri]&access_token=[токен]

Однако это не работает и молча перенаправляет меня обратно на домашнюю страницу facebook.

Мое лучшее предположение на данный момент: facebook не нравится «следующий» URI, который я предоставляю. Я обновил настройки своего приложения FB, но либо они еще не распространились, либо что-то еще не работает.

Я видел сообщения, рекомендующие использовать InternetSetOption, но этот API недоступен на телефоне.

В потоке моего приложения выход из системы приводит к переходу на другую страницу Silverlight в моем приложении, поэтому мне все равно не нужно перенаправление браузера для моей цели, поэтому я мог бы просто «забыть» токен доступа, фактически не сообщая FB, чтобы сделать его недействительным. , но это кажется слабым и ненадежным.

Итак, пока я жду дольше, чтобы увидеть, распространяются ли изменения домена приложения на серверы FB и решают проблему, у меня есть другой вопрос:

Почему API Facebook должны заботиться о том, предоставляю ли я «далее» или нет? Разве я не должен просто сказать им, чтобы они аннулировали токен и чтобы это произошло?

Есть ли какая-то логическая часть, которую мне здесь не хватает?

Спасибо!


person Brad    schedule 31.12.2011    source источник
comment
Что такое это redirect_uri, которое вы указываете? Правильно ли он закодирован в URL? Правильно ли настроен сеанс https, проверены ли сертификаты и т. д.? Работает ли URL-адрес, когда вы вводите его вручную в настольном браузере?   -  person sarnold    schedule 01.01.2012
comment
Нет, вручную не работает. Я использую встроенный веб-элемент управления Silverlight, поэтому он обрабатывает SSL внутри, но в остальном все в порядке. Я использую redirect_uri: mydomain.com, где mydomain.com указан в доменах приложений приложения.   -  person Brad    schedule 04.01.2012
comment
Не забудьте включить http:// в строку запроса. :(   -  person Brad    schedule 04.01.2012
comment
@BitBlitz Я обновил свой ответ - это возможно, хотя и не так просто, как должно быть.   -  person bkaid    schedule 22.01.2012


Ответы (1)


Обновление: я написал элемент управления входом/выходом из Facebook с открытым исходным кодом для WP7, который позволяет это (проверьте пример проекта). Он работает, по существу, используя элемент управления веб-браузера для перехода на страницу выхода, а затем отправляет форму выхода путем внедрения javascript в элемент управления веб-браузера. Идея возникла из этого сообщения в блоге.

Наиболее близким было бы отозвать расширенные разрешения, выполнив HTTP DELETE для /me/permissions, как задокументировано здесь. Простое забвение токена авторизации — неплохой вариант, так как токены доступа, как правило, хороши только в течение часа или двух, если вы не запросили offline_access. А если пользователь слишком обеспокоен, он может удалить ваше приложение на своей странице настроек на facebook.com.

person bkaid    schedule 01.01.2012
comment
Отличная идея, однако это текущая проблема с C# SDK. См.: facebooksdk.codeplex.com/workitem/5926. - person DMCS; 01.01.2012
comment
Было бы достаточно просто сделать простой вызов HttpWebRequest, если он не будет исправлен. - person bkaid; 01.01.2012
comment
Да, правда :) Когда я вернусь на работу на следующей неделе после праздника, я буду делать именно это! - person DMCS; 01.01.2012
comment
@DMCS Я обновил свой ответ. У меня этот выход работает на WP7 (хотя это хак). - person bkaid; 22.01.2012
comment
спасибо за обновление :) Однако мой обходной путь - использовать вызов FB.api(), чтобы сделать то же самое на стороне клиента. Работает как шарм, всего несколько дней назад он даже прошел мой отдел контроля качества. - person DMCS; 22.01.2012