使用spring security检索facebook电子邮件地址

时间:2016-12-23 01:48:35

标签: spring facebook rest api oauth

我按照this教程尝试将我的用户验证到我的REST API,一切正常,我的校长返回我的名字,但我似乎没有得到任何其他数据(电子邮件,朋友)范围内的列表等)。我怎么用弹簧做到这一点?

Yaml配置文件:

    security:
  oauth2:
    client:
      clientId: CENSORED
      clientSecret: CENSORED
      accessTokenUri: https://graph.facebook.com/oauth/access_token
      userAuthorizationUri: https://www.facebook.com/dialog/oauth
      tokenName: oauth_token
      authenticationScheme: query
      clientAuthenticationScheme: form
      scope: email,user_friends,public_profile
    resource:
      userInfoUri: https://graph.facebook.com/me
  user:
    password: password

spring:
  social:
    facebook:
      app-id: CENSORED
      app-secret: CENSORED

RestController:

    @RestController
public class UserController {

    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public Principal user(FixedPrincipalExtractor extractor, Principal principal)   {

        return principal;
    }
}

我需要这些信息,因为我希望能够通过邮件发送给我的用户,还可以查看其他朋友的信息。也使用这个应用程序。

提前致谢!请问是否有不明确的事情。

(我使用maven作为包管理器,使用spring security作为我的RESTFul API的身份验证,它应该连接到我的AngularJS前端||我是Spring的新手,我通常使用它构建REST API' s JAX-RS)

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,我在响应地图中只获得了idname字段。

@luschn是对的。我们需要明确指定响应字段。

对于电子邮件,我将userInfoUri属性修改为

resource: userInfoUri: https://graph.facebook.com/me?fields=id,name,email

使用此图表资源管理器工具查看您的回复中需要的字段。

https://developers.facebook.com/tools/explorer/

快乐的编码!