Я использую библиотеки SocialAuth в своем приложении JSF для обеспечения входа в систему с помощью Google / Facebook.Как показано ниже, требуется, чтобы я сохранил объект SocialAuthManager («manager») в сеансе, а затем перенаправил на URL «google / facebook»
//Create an instance of SocialAuthManager and set config
SocialAuthManager manager = new SocialAuthManager();
manager.setSocialAuthConfig(config);
// URL of YOUR application which will be called after authentication
String successUrl= "http://opensource.brickred.com/socialauthdemo/socialAuthSuccessAction.do";
// get Provider URL to which you should redirect for authentication.
// id can have values "facebook", "twitter", "yahoo" etc. or the OpenID URL
String url = manager.getAuthenticationUrl(id, successUrl);
// Store in session
session.setAttribute("authManager", manager);
Затем получил «manager» из сеанса при succssfull / failперенаправление из facebook / redirect, как показано ниже:
// get the social auth manager from session
SocialAuthManager manager = (SocialAuthManager)session.getAttribute("authManager");
// call connect method of manager which returns the provider object.
// Pass request parameter map while calling connect method.
AuthProvider provider = manager.connect(SocialAuthUtil.getRequestParametersMap(request));
// get profile
Profile p = provider.getUserProfile();
Проблема в том, что если я уже вошел в Facebook или Google в одной из «вкладок» браузера, то это прекрасно работает.Но если я еще не вошел в систему, сессия становится NULL и, следовательно, также «менеджером».
Другими словами, если происходит перенаправление с «моего приложения на Facebook на мое приложение», оно завершается неудачно.Если я уже вошел в Facebook, то перенаправление не происходит, и оно работает.
Может кто-нибудь помочь?ПРИМЕЧАНИЕ: это отлично работает в случае IE, но не работает в случае Chrome & Mozila