Struts 2 и простой API Facebook

Я пытаюсь создать веб-приложение в java, которое может публиковать сообщения в статусе Facebook пользователей, и у меня возникают некоторые проблемы с процессом авторизации. По сути, у меня есть действие struts2, которое перенаправляет пользователя на страницу входа в facebook, которая затем перенаправляет меня обратно с «кодом». Затем я использую этот код для доступа к другому URL-адресу facebook (чтобы обменять его на токен доступа).

Проблема в том, и я, вероятно, просто упустил что-то простое, что этот второй URL-адрес facebook не перенаправляет на действие, вместо этого он просто возвращает страницу с токеном доступа на ней. Итак, мой вопрос: как мне получить доступ к этому токену, чтобы поместить его в мою базу данных, желательно, не показывая токен доступа конечному пользователю?

TLDR; Любая идея, как я могу вызвать запрос от действия в struts2 на внешний URL-адрес и проанализировать ответ, не показывая его пользователю? Спасибо!

С уважением, Лукас Резек


person lukas    schedule 21.02.2011    source источник
comment
вы подаете в суд на какой-либо API oauth? или с помощью простого java-кода сделать это?   -  person Umesh Awasthi    schedule 26.10.2012


Ответы (2)


Итак, в основном вам нужно 3 части:

  1. Перехватчик
  2. действие authRequest
  3. действие authResponse

Итак, поток:

  1. Перехватчик проверит, есть ли у текущего пользователя токен авторизации, если нет — перенаправит на действие authRequest.
  2. Действие authRequest заполнит данные вашего приложения — создайте URL-адрес graph.facebook.com/oauth/authorize?client_id=xxx&redirect_uri=yyy и т. д. Обратите внимание, что redirect_uri — это точно действие authResponse. поэтому после того, как пользователь авторизует ваше приложение, браузер перенаправит вас на действие authResponse.
  3. Действие authResponse — это процесс, в котором вы извлекаете токен, сохраняете его в БД и, возможно, устанавливаете для сеанса. после того, как вы закончите с этим - вы закончите с входом в систему, и вы можете перенаправить на домашнее действие вашего приложения
person tevch    schedule 05.08.2011

Чтобы получить доступ к внешнему веб-сайту в рамках действия Struts, у вас есть два варианта. Создайте сокет и подключитесь к внешнему сайту, отправьте запрос через socket.outputstream и проанализируйте ответ через socket.inputStream или используйте эмулятор браузера, такой как Apache HttpComponents или HTMLUnit.

Я бы не позволил пользователю моего веб-приложения приблизиться к сайту Facebook - у меня была бы собственная страница, которая запрашивала бы вход в FB и обрабатывала бы взаимодействие с сайтом facebook, используя один из двух методов выше. Я бы предпочел использовать HTMLUnit, поскольку он предназначен для просмотра удаленного сайта как браузер.

person user497087    schedule 26.10.2012