0

我有我的自定义auth服务器实现使用spring-security-oauth以及几个客户端应用程序的单点登录,我有Facebook和谷歌登录选项。princiapal.getName()返回ID而不是名称为facebook

现在我的客户端应用程序时,我有此控制器:

@RequestMapping({ "/user", "/me" }) 
public Principal user(Principal principal) { 
    return principal; 
} 

对于谷歌它工作正常,返回的名字,但对于Facebook,它返回一个唯一的ID。我尝试了很多方法,但是我无法从这个主要对象获取名称。有人可以帮忙吗?

这是我的短板缺的Facebook配置:

accessTokenUri: https://graph.facebook.com/oauth/access_token 
userAuthorizationUri: https://www.facebook.com/dialog/oauth 
tokenName: oauth_token 
authenticationScheme: query 
clientAuthenticationScheme: form 
userInfoUri: https://graph.facebook.com/me?fields=id,name,email 

回答

0

使用f_name,而不是nameFacebook的图形API

+0

我已经在使用它。 – Atif

0

好吧,我得到了解决办法吧:

@RequestMapping(value = { "/user", "/me"}, method = RequestMethod.GET) 
public Map<String, String> user(Principal principal) { 
    Map<String, Object> details = (Map<String, Object>) ((OAuth2Authentication) principal).getUserAuthentication().getDetails(); 
    Map<String, String> map = new LinkedHashMap<>(); 
    map.put("name", (String) details.get("name")); 
    map.put("email", (String) details.get("email")); 
    return map; 
} 
相关问题