SCRIBEライブラリを使用して、アプリケーションでFacebook接続ログインを有効にしています。私の問題は、ログインしてログインボタンをクリックするたびにaccess_tokenを取得した後、Facebookにサインインしていて、access_tokenがまだアクティブであるため、許可なくサインインしていることです。Facebookに強制的にサインアウトさせる方法はありますか、または毎回新しいaccess_tokenを要求する方法はありますか?Cookieを使用するか、connect.facebook.net / en_US / all.jsを使用するか、ある時点でリダイレクトすることをお勧めします。https://www.facebook.com/logout.php?access_token=appId&confirm=1&next=http://localhost:8080/に移動します。そのトピックについて多くの質問があることは知っていますが、それらすべてと提案された解決策は私を混乱させます。これは、Facebookの応答を処理するマネージドBeanのmypostconstructメソッドです。
@PostConstruct public void init(){FacesContext context = FacesContext.getCurrentInstance(); HttpServletRequest req =(HttpServletRequest)context .getExternalContext()。getRequest();
responseCode = req.getParameter("code");
System.out.println("The code is: "+responseCode);
//facebook data
final String PROTECTED_RESOURCE_URL = "https://graph.facebook.com/me";
final Token EMPTY_TOKEN = null;
String apiKey = "MY_API_KEY";
String apiSecret = "MY_API_SECRET";
String callbackUrl="the-redirect_page_in_my_application";
OAuthService service = new ServiceBuilder().provider(FacebookApi.class)
.apiKey(apiKey).apiSecret(apiSecret)
//.scope(SCOPE)
.callback(callbackUrl).build();
//get authorization Url
String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
Verifier v=new Verifier(responseCode);
Token accessToken = service.getAccessToken(EMPTY_TOKEN, v);
// Now let's go and ask for a protected resource!
OAuthRequest request = new OAuthRequest(Verb.GET,
PROTECTED_RESOURCE_URL);
service.signRequest(accessToken, request);
Response response = request.send();
Gson gson = new GsonBuilder().create();
FacebookUser faceUser = gson.fromJson(response.getBody(), FacebookUser.class);
setUserName(faceUser.getName());
setUserFacebook(faceUser.getUsername());
setGender(faceUser.getGender());
FacesContext.getCurrentInstance().responseComplete();
}