Хорошо, то, что я никогда раньше не отвечал (поскольку я предполагал, что пользователь знает авторизацию OAuth), является инициацией потока авторизации OAuth.
Во-первых, следуйте потоку OAuth, как указано здесь . Я покажу вам, как это делается в Java на основе того, что задокументировано.
Чтобы этот рабочий процесс работал, вам необходимо запросить код авторизации (через запрос авторизации, как указано в пункте 4.1.1 спецификации OAuth).
Этот метод вызывается из OAuth2Consumer
класса:
public String generateRequestAuthorizationUrl(ResponseType responseType, String redirectUri, String state, String scopeDelimiter, String... scope) throws OAuthException {
Помните , scopeDelimiter
для Facebook - это запятая ,
, а responseType
- ResponseType.CODE
. scope
- это то, что Facebook воспринимает как разрешения.
Полный пример таков:
String client_id = "<APP_ID>";
String client_secret = "<CLIENT_SECRET>";
String redirectUrl = "http://127.0.0.1:5080/Red5FacebookAuth/oauth/oauth_redirect";
OAuth2ServiceProvider provider = new OAuth2ServiceProvider("https://graph.facebook.com/oauth/authorize", "https://graph.facebook.com/oauth/access_token");
OAuth2Consumer consumer = new OAuth2Consumer(client_id, client_secret, provider);
//Using HttpServletResponse (but you can kickstart it through an Action/Controller/etc.
response.sendRedirect(consumer.generateRequestAuthorizationUrl(ResponseType.CODE, redirectUrl, null, ",", (String[])null)); //where null is the scope array,
Это, в свою очередь, вызовет ваш com.facebook.FacebookOAuthService.processReceivedAuthorization
, когда Facebook выполнит HTTP-перенаправление. code
- это ваш код авторизации, полученный от Facebook.
Надеюсь, это поможет!
PS Facebook не выполняет HTTP-перенаправление на вашу страницу при запросе токена доступа, поэтому вы сохраняете его вручную в сеансе, а не в JOAuth (он использует OAuth 2 draft 0). Если другой поставщик услуг OAuth 2 использует HTTP-редирект после запроса токена доступа, не не сохраняет токен доступа, OAuth2Service
сделает это автоматически.
PPS Используйте любую структуру журналирования для просмотра журналов.
Удачи и дайте мне знать, что произойдет!