【问题标题】:spring social Facebook 2.0.2 cannot get emailspring social Facebook 2.0.2 收不到邮件
【发布时间】:2016-02-07 12:29:22
【问题描述】:

我正在使用 Spring 社交 Facebook 框架 2.0.2,并且我正在访问 Facebook 应用程序版本 2.5。

不知何故,我无法获取通过 fetchObject 方法进行身份验证的用户的电子邮件地址。

@RequestMapping("/register/facebook")
public String registerFacebookUser(WebRequest request, Model model) {
    Connection<Facebook> connection = (Connection<Facebook>)providerSignInUtils.getConnectionFromSession(request);

    User profile = connection.getApi().fetchObject("me", User.class, "id", "first_name", "last_name", "link", "email");

    userConnectionRepository.createConnectionRepository(profile.getId()).addConnection(connection);

    return "register";
}

Id、名字和姓氏都可以正常工作,但电子邮件地址似乎为空。我已经在 Facebook 上注册了一个电子邮件地址,并正确验证了它并且可以公开使用。

当我查看代码时,我的第一个猜测是 Spring social Facebook 使用的版本是 2.3。你觉得可能是这样吗?

【问题讨论】:

  • 您是否向用户请求了适当的权限?

标签: java spring facebook spring-social email-address


【解决方案1】:

facebook api 的更改可能导致了这种情况。试试下面的代码:

UserOperations userOperations = facebook.userOperations();
            String [] fields = { "id", "email",  "first_name", "last_name" };
            org.springframework.social.facebook.api.User profile = facebook.fetchObject
                    ("me", org.springframework.social.facebook.api.User.class, fields);

【讨论】:

    【解决方案2】:

    我正在回答我的问题,因为我找到了我所缺少的。

    您实际上需要在隐藏输入的登录表单中授予权限。与您为 CSRF 令牌执行此操作的方式非常相似。

            <form id="fbk_signin" action="<c:url value="/signin/facebook"/>" method="POST">                
                <button type="submit">
                    SignIn with facebook
                </button>
                <input type="hidden"
                       name="${_csrf.parameterName}"
                       value="${_csrf.token}"/>
                <input type="hidden" name="scope" value="public_profile,email" />
            </form>
    

    权限值可以在 Facebook 开发网站上找到 here

    感谢 CBroe 的回答,他让我在春季文档中看到了这一点。我不知道。

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多