0

シングルサインオン用のいくつかのクライアントアプリケーションと一緒にspring-security-oauthを使用してカスタム認証サーバーを実装しましたが、FacebookとGoogleログインのオプションがあります。princiapal.getName()はFacebookの名前の代わりにIDを返します

今私のクライアントアプリケーションの私は、このコントローラがある場合:Googleにとって

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

をそれが正常に動作して名前を返しますが、Facebookのために、それはユニークなIDを返します。私は多くの方法を試みましたが、私はこのプリンシパルオブジェクトから名前を得ることができません。誰かが助けてくれますか?

これは私の短いcutted 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代わりのFacebookのグラフAPI用name

+0

私はすでにそれを使用していました。 – Atif

0

[OK]を私はそれのために周りの仕事を得た:

@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; 
} 
関連する問題