请考虑以下情况:
根据this教程,在登录时处理来自Facebook的回调应该如下所示(并且它完全正常):
@RequestMapping("/auth/facebook/callback")
public RedirectView callBack(@RequestParam("code") String code,
@RequestParam("state") String state,
HttpSession session) {
String stateFromSession = (String) session.getAttribute(STATE);
session.removeAttribute(STATE);
if (!state.equals(stateFromSession)) {
return new RedirectView("/login");
}
AccessGrant accessGrant = getAccessGrant(code);
String facebookUserId = getFacebookUserId(accessGrant);
session.setAttribute("facebookUserId", facebookUserId);
return new RedirectView("/logged-in");
}
问题 问题是,如何通过facebook用户ID确定我已经在我的数据库中有一个这样的电子邮件的用户,因为我只知道FB用户ID而我不知道他的身份验证令牌使用FB检索电子邮件图形?
目标 我希望我的问题很明确。我尝试实现的是将他通过使用电子邮件和密码注册创建的用户帐户与他的FB帐户相关联,为他提供登录我的应用程序的附加选项。
答案 0 :(得分:1)
哦,我自己就找到了答案。 AccessGrant有一个返回accessToken
的方法accessGrant.getAccessToken()
现在我可以使用FB用户ID和访问令牌调用FB图来获取电子邮件(假设用户授予我获取电子邮件的权限)。