Я начинаю использовать Facebook Graph API и собираюсь получить токен доступа с помощью нескольких простых HTTP-запросов через Java.
Подписан https://developers.facebook.com/docs/authentication/
Я создал новое приложение, но у меня нет домена, поэтому
Я делаю HTTP-запрос к
www.facebook.com / диалог / OAuth? Client_id = YOUR_APP_ID &
redirect_uri = https://www.facebook.com/connect/login_success.html
для потока на стороне сервера, и я предполагаю получить перенаправление на страницу успеха с кодом в URL. Тогда я бы использовал этот код сделать еще один HTTP-запрос к
graph.facebook.com / OAuth / access_token?
client_id = YOUR_APP_ID & redirect_uri = YOUR_URL &
client_secret = YOUR_APP_SECRET и код = THE_CODE_FROM_ABOVE
и, наконец, получите мой токен доступа.
Я использовал java.net.HttpURLConnection
и org.apache.http.HttpResponse
,
но в обоих случаях, выполняя первый звонок, я получаю в ответ HTML-код страницы входа в Facebook.
Если я использую этот HTML-код для создания веб-страницы, а затем просто нажимаю кнопку входа в систему (без ввода имени пользователя и пароля), я получаю страницу успеха с кодом!
В HTML поле отправки кнопки Логин пусто, и я не могу получить URL перенаправления ... Я могу просто прочитать альтернативную ссылку в теге <meta>
, которая генерирует токен auth_token (что это? сильно отличается от обычного access_token ...).
Итак, я спрашиваю:
можно каким-то образом обнаружить скрытый редирект
используя java.net.HttpURLConnection
или
org.apache.http.HttpRespons
е
если да, то как механизм? Это связано с auth_token
?
если нет, возможно ли это с другими библиотеками? (Я использовал также restfb,
но они, кажется, требуют токен доступа, вставленный "вручную" как
arg, и я также видел facebook-java-api, но он кажется старым).
Также, если я вошел в Facebook, выполняя первый HTTP-вызов через Java, я получаю в ответ HTML-код страницы входа в Facebook.
Используя HTML для создания веб-страницы, а затем я просто нажимаю кнопку «Вход» (без ввода имени пользователя и пароля), я получаю страницу success.htm с параметром кода в URL.
Если я использую исходный URL-адрес непосредственно в своем браузере, я могу напрямую получить страницу success.htm без переходов в середине.
Итак, я полагаю, что проблема заключается в управлении куки: в Java (выполняется в Eclipse) я не могу получить доступ к куки моего браузера.
Я попытался перенаправить на использование сервлета, но я получаю сообщение об ошибке домена:
ServletURL не является доменом Facebook или «URL-адресом сайта», зарегистрированным для моего приложения (на самом деле я не установил URL-адрес сайта для своего приложения ... и это основная проблема).
В любом случае здесь
http://developers.facebook.com/docs/authentication/
в разделе Типы приложений> Настольные приложения говорят:
[...] После того, как пользователь авторизует ваше приложение [я разрешил все], мы
перенаправить пользователя обратно на redirect_uri с токеном доступа в
фрагмент URI: [...]
Определите это перенаправление, а затем прочитайте токен доступа из URI
используя любые механизмы, предоставленные вашей структурой выбора. [...]
Так что я думаю, что все еще возможно обнаружить это перенаправление через Java. Как?