Я пытаюсь сделать клиентское приложение для аск.фм под windows phone 8.1, но столкнулся с проблемой: не могу аутентифицироваться через фэйсбук. Насколько я понял, юзая фидлер, сначала мне нужно отправить гет-запрос на ask.fm/facebook_session/login, дабы спарсить из хедеров "state". Сначала иду на /логин и беру так ask.fm_session, потом иду на /facebook_session/login и отправляю туда эту куку, но мне приходят какие-то странные хедеры, в которых нет нужного мне стэйта. Вот хедеры: Pragma: no-cache Cache-Control: no-store, must-revalidate, no-cache,private X-Frame-Options: DENY X-XSS-Protection:0 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=15552000; preload P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p"Set-Cookie: datr=8MtiVbcrQbW0VURR4p5XKF_V; expires=Wed,24-May-201707:14:56 GMT;Max-Age=63072000; path=/; domain=.facebook.com; httponly, reg_ext_ref=deleted; expires=Thu,01-Jan-197000:00:01 GMT;Max-Age=0; path=/; domain=.facebook.com, reg_fb_ref=https%3A%2F%2Fm.facebook.com%2Flogin.php%3Fskip_api_login%3D1%26api_key%3D129215213762342%26signed_next%3D1%26next%3Dhttps%253A%252F%252Fm.facebook.com%252Fv2.2%252Fdialog%252Foauth%253Fredirect_uri%253Dhttp%25253A%25252F%25252Fask.fm%25252Ffacebook_session%25252Ffinalize%2526state%253D05649732ff056093db5fd9c37d0a8c22866bb428%2526scope%253Duser_friends%2526client_id%253D129215213762342%2526ret%253Dlogin%26cancel_uri%3Dhttp%253A%252F%252Fask.fm%252Ffacebook_session%252Ffinalize%253Ferror%253Daccess_denied%2526error_code%253D200%2526error_description%253DPermissions%252Berror%2526error_reason%253Duser_denied%2526state%253D05649732ff056093db5fd9c37d0a8c22866bb428%2523_%253D_%26display%3Dtouch; path=/; domain=.facebook.com; httponly, m_ts=1432538096; path=/; domain=.facebook.com; httponly Vary:Accept-Encoding X-FB-Debug:Urv7Hs36BzaNOPQIdkY+wkwip7qUe4cKHApBEi0UnWBC92p1dxj/6GBy+QfuoN5oYOj19Uytik8ffDVdeQi/XQ==Date:Mon,25May201507:14:56 GMT Transfer-Encoding: chunked Connection: keep-alive Here are the questions: 1)Что я делаю не так? Может быть, помимо сессиона, надо отправлять ещё какие-то куки? Или хедеры нужные проставить? 2)Правильно ли я вообще понял процесс аутентификации?
Никогда на практике не встречал веб-приложения, которое парсит переменные с хедера. Они всегда лежат в коде страницы или генерируются на стороне клиента.
При переходе на /фэйсбук_сессион/логин в броузере в ответ я получаю редирект на юрл вида https://www.facebook.com/v2.2/dialog/oauth?client_id=ххххххххххххх&redirect_uri=http://ask.fm/facebook_session/finalize&state=65c5b006716f55d1fffe43f9dcba6baf1f842512&scope=user_friends Фактически можно было бы и из хтмл вырвать, но проблема в том, что, когда я отправляю запрос через приложение, мне возвращаются совсем другие вещи. Я юзаю httpClient с httpClientHandler-ом. С помощью хендлера отключаю авторедирект. Не знаю, в чём проблема может быть. Вообще я был бы очень признателен, если бы кто-нибудь сам через фидлер посмотрел, как это всё работает. Может быть, надо какие-то хедеры дополнительные отсылать или куки? В дальнейшем, кстати, собираюсь производить аутентификацию через webAuthenticationBroker. При запросе на /фэйсбук_сессион/логин броузер отсылает вот эти куки: GET http://ask.fm/facebook_session/login HTTP/1.1 Host: ask.fm Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36 Referer: http://ask.fm/ Accept-Encoding: gzip, deflate, sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: mobile_view=false; __qca=P0-1456338092-1425819582219; inbox_notice=1431661860; language_id=1; rbox_type=2; rbox_toggle=1; __utmt=1; authorize_intent=home; _ask.fm_session=BAh7CToKYXNrZm17ADoQb2xkX2dldF91cmwiBi86D3Nlc3Npb25faWQiJWZlMmE4MmY2Y2IzNTgwYmQzMzcwYjU1Nzk1ZmZjZTM2OhBfY3NyZl90b2tlbiIxZmpnYTkzSXJvcG04b1AzS2FtcUVST0pZQXp4bE16T0FHVWs1bGhkcnB2TT0%3D--38f3a10965382c40fa454013f5d84ce436b55455; __utma=1.495546588.1425819582.1432515285.1432524420.198; __utmb=1.2.10.1432524420; __utmc=1;
Простой GET-запорс на http://ask.fm/facebook_session/login без дополнительных заголовков. Сразу получаем куки для ask.fm и переходим по редиректу (не забыв поставить в запрос куки ФБ). Обратный редирект на ask.fm (с куками ask.fm) Если это первая авторизация, нужно предоставить права приложению в ФБ и подтвердить регистрацию на ask.fm.