Мой веб-сайт (Spring MVC) позволяет пользователям регистрироваться, используя свои учетные записи Facebook, и позже заходить на мой сайт, используя свои учетные записи Facebook.Я использую scribejava (версия 6.6.3) (https://github.com/scribejava/scribejava) для интеграции Oauth с Facebook.
Я проверил вариант использования и не могу найти способ его решить. Вот списокшагов:
- Тестер переходит на страницу «Вход» моего сайта, нажимает «Войти через Facebook», предоставляет разрешения на Facebook, перенаправляется на мой сайт и выходит из системы. Этонормальный и успешный поток.
- Тестер входит в Facebook на Facebook.com
- Тестер переходит в «Настройки» -> «Приложения и веб-сайты» и удаляет мой сайт
- Тестер переходит кНа странице «Вход» моего сайта нажимает кнопку «Войти через Facebook», перенаправляется на Facebook и видит сообщение об ошибке.
На шаге 4 тестер всегда получает сообщение об ошибке приСайт Facebook вместо того, чтобы просить тестера снова предоставить разрешения. См. Следующий снимок экрана:
![enter image description here](https://i.stack.imgur.com/rpI0W.jpg)
Я не могу найти способ в Facebook удалить это сообщение, когданажав на кнопку «Войти сКнопка "Facebook"Вот мой код для веб-интерфейса.Я что-то пропустил?
@RequestMapping( value="/facebook", method = RequestMethod.GET)
public void facebook(HttpServletRequest request,
@RequestParam(value = "page", required = true) String page,
HttpServletResponse response) throws Exception {
try {
OAuth20Service service = new ServiceBuilder(config.getProperty("facebook.clientId"))
.apiSecret(config.getProperty("facebook.clientSecret"))
.callback(getCallback())
.build(FacebookApi.instance());
String authUrl = service.getAuthorizationUrl();
response.sendRedirect(authUrl);
} catch (Exception e) {
response.sendRedirect("/oauthFail");
}
}
@RequestMapping( value="/facebook/callback", method = RequestMethod.GET)
public void facebookCallback(HttpServletRequest servletRequest,
@RequestParam(value = "code", required = false) String code,
@RequestParam(value = "error", required = false) String error,
HttpServletResponse servletResponse
) throws Exception {
try {
OAuth20Service service = new ServiceBuilder(config.getProperty("facebook.clientId"))
.apiSecret(config.getProperty("facebook.clientSecret"))
.callback(getCallback())
.build(FacebookApi.instance());
OAuth2AccessToken accessToken = service.getAccessToken(code);
final OAuthRequest request = new OAuthRequest(Verb.GET, "https://graph.facebook.com/v3.2/me");
service.signRequest(accessToken, request);
final com.github.scribejava.core.model.Response response = service.execute(request);
String body = response.getBody();
JSONObject jObject = new JSONObject(body);
String email = jObject.getString("email");
//success. use the email to create an account or if the email address exists, direct a userto their account page
} catch (Exception e) {
response.sendRedirect("/oauthFail");
}
}
Как справиться с этой ситуацией?Я чувствую, что что-то не так, мой код или scribejava имеет проблему с фреймворком.Или это проблема для Facebook?