如何在java中使用facebook登录验证用户

时间:2014-05-09 15:57:22

标签: java jsp servlets oauth facebook-oauth

您好我正在使用java进行网络项目我希望网站用户使用他们的Facebook帐户登录。我试过Facebook Developer official

但没有得到解决方案

2 个答案:

答案 0 :(得分:8)

我可以向您推荐OAuth库Scribe或其改进的fork Subscribe。如果您对使用示例感兴趣,请查看我的项目OAuh JEE Login

首先,你需要获得OauthService实例:

OAuthService service = new ServiceBuilder()
            .provider(FacebookApi.class)
            .apiKey("key").apiSecret("secret")
            .scope("email").callback("https://hostname/endpoint/")
            .build();

然后,您需要将用户重定向到Facebook页面,在那里他将授予对您的应用程序/登录的访问权限:

String redirectUrl = service.getAuthorizationUrl(NULL_TOKEN);
response.sendRedirect(redirectUrl);
然后,Facebook会调用你的回调uri,你需要获取参数code并获取访问令牌:

String verifierValue = request.getParameter("code");
if (verifierValue == null) {
    log.warn("Callback did not receive code parameter!");
    return false;
}

Verifier verifier = new Verifier(verifierValue);
Token accessToken = service.getAccessToken(NULL_TOKEN, verifier);

最后是时候使用此令牌向Facebook询问用户详细信息了:

OAuthRequest resourceRequest = new OAuthRequest(Verb.GET, RESOURCE_URL);
service.signRequest(accessToken, resourceRequest);
Response resourceResponse = resourceRequest.send();

JsonObject jsonObject = JsonObject.readFrom(resourceResponse.getBody());
JsonValue value = jsonObject.get("username");

请参阅课程FacebookOAuthProcessor

答案 1 :(得分:0)

我建议使用Scribe。

查看如何在此处使用Facebook与scribe的示例: https://github.com/fernandezpablo85/scribe-java/blob/master/src/test/java/org/scribe/examples/FacebookExample.java