Struts 2 и простой API Facebook - PullRequest
       1

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

3 голосов
/ 21 февраля 2011

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

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

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

Ура, Лукас Резек

Ответы [ 2 ]

3 голосов
/ 05 августа 2011

Так что в основном вам нужно 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 - это платформа, где вы получаете токен, сохраняете его в БД и, вероятно, устанавливаете в сеанс.после того как вы сделали это - вы выполнили вход в систему и можете перенаправить на домашнюю страницу своего приложения действие
0 голосов
/ 26 октября 2012

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

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

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