spring - Facebook OAuth 不返回用户的电子邮件

标签 spring facebook facebook-graph-api spring-boot oauth

我正在使用 OAuth 在 Spring Boot 上关注本教程:
https://spring.io/guides/tutorials/spring-boot-oauth2/

在“点击”应用程序中,我添加了:

security:
oauth2:
client:
  clientId: 233668646673605
  clientSecret: 33b17e044ee6a4fa383f46ec6e28ea1d
  scope: email <------- ***** THIS IS WHAT I ADDED ***** ---------
  accessTokenUri: https://graph.facebook.com/oauth/access_token
  userAuthorizationUri: https://www.facebook.com/dialog/oauth
  tokenName: oauth_token
  authenticationScheme: query
  clientAuthenticationScheme: form
resource:
  userInfoUri: https://graph.facebook.com/me

logging:
  level:
    org.springframework.security: DEBUG

我使用了我的一个测试 Facebook 帐户,一切正常。 Principal 对象包含电子邮件地址。上述配置文件中的凭据是本教程的一部分。

为了使用我自己的 OAuth 注册应用程序进行测试,我转到我的常规帐户并使用一个使用 Facebook 登录作为产品的应用程序创建了一个 Facebook 开发者帐户。

然后我将自己的 clientId 和 clientSecret 放入 YAML 文件中,重新打包应用程序并运行它。

邮箱地址 对于相同的 未从 Facebook 收到测试 Facebook 帐户。

关于为什么教程中的一个有效而我的没有的任何想法?

这是我的 Facebook 登录配置的样子:
enter image description here

有任何想法吗?

任何帮助将非常感激!

谢谢!

最佳答案

好的,我终于弄明白了,所以把它张贴在这里,供其他可能遇到这种情况的人使用。我没那么容易找到答案。

您在 Facebook Graph API 更改之前编写了该教程。

现在,仅仅因为您指定了“范围:电子邮件”,它只是 允许 您将收到电子邮件(在用户批准后)。然而,实际上获取 电子邮件,您需要在 URL 本身中明确指定。所以,在上面的配置中,这一行会改变(不是额外的 '?fields=email,name'):

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

这是对 Facebook API 2.4 版的更改。在撰写本文时为 2.8。请参阅此链接:
https://developers.facebook.com/blog/post/2015/07/08/graph-api-v2.4/

(特别要注意它在第 3 个项目符号中所说的内容,从“更少的默认字段以获得更快的性能......”开始。

希望这可以帮助某人!

关于spring - Facebook OAuth 不返回用户的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313316/

相关文章:

java - 使用什么技术将系统托盘前端写入webapp?

java - 在 spring mvc 中更改 URL

javascript - Facebook:获取用户的公开照片

javascript - 没有访问 token 调用的简单 facebook 注销返回

php - facebook graph api 确定用户是否喜欢 url

java - java中如何使文本适合xls列大小

spring - 在thymeleaf中获取spring应用环境

ios - Facebook 请求示例项目

android - 由 com.google.android.gms.DynamiteModules 引起的 ANR

javascript - Facebook Feed,在墙上张贴两张照片。 JavaScript SDK