Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Facebook OAuth没有';不返回用户的电子邮件_Spring_Facebook_Facebook Graph Api_Spring Boot_Oauth - Fatal编程技术网

Spring Facebook OAuth没有';不返回用户的电子邮件

Spring Facebook OAuth没有';不返回用户的电子邮件,spring,facebook,facebook-graph-api,spring-boot,oauth,Spring,Facebook,Facebook Graph Api,Spring Boot,Oauth,下面是关于OAuth的Spring Boot的教程: 在“点击”应用程序中,我添加了: security: oauth2: client: clientId: 233668646673605 clientSecret: 33b17e044ee6a4fa383f46ec6e28ea1d scope: email <------- ***** THIS IS WHAT I ADDED ***** --------- accessTokenUri: https://graph.

下面是关于OAuth的Spring Boot的教程:

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

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
安全性:
oauth2:
客户:
客户编号:233668646673605
客户机密:33b17e044ee6a4fa383f46ec6e28ea1d

范围:email好的,我终于弄明白了,所以把它贴在这里给可能遇到这个问题的人。我没那么容易找到答案

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

现在,仅因为您指定了“范围:电子邮件”,它就允许您(在用户批准后)获取电子邮件。但是,要实际获取电子邮件,您需要在URL本身中明确指定。因此,在上面的配置中,此行将更改(不是额外的“?fields=email,name”):

从2.4版开始,这是对Facebook API的更改。在撰写本文时为2.8。请参阅此链接:

(尤其要注意第三个项目符号中的内容,从“减少默认字段以提高性能…”开始


希望这有助于他人!

我知道这有点过时,但出于安全原因,任何来这里寻求帮助的人:

不要公开发布你的CLIENT_ID或CLIENT_SECRET,也不要将它们放在app.js等中。正确的协议是创建一个.env文件(前面的.env表示它保持隐藏,同时将这个“.env”文件添加到你的“.ignore”文件中,这样它就不会被上传到github或你上传文件到的任何其他存储库。) 在.env文件中,应输入以下行: FACEBOOK_客户端_ID:123456789(其中的数字是提供给您的) FACEBOOK_CLIENT_SECRET:987654321(这个号码也是给你的)

*请注意:左侧的内容均为带下划线的大写字母,且以下内容的两侧不应有空格: 行与行之间也没有逗号或

然后在你的应用程序中,你应该把这些称为 process.env.FACEBOOK_CLIENT_ID和process.env.FACEBOOK_CLIENT_SECRET(或者您如何称呼它们,只要它们与前面的“process.env.”匹配即可)

最后,您需要通过以下方式进行要求:

(一) 在命令字段或类似字段中安装它(npm i dotenv)

(二)
require(“dotenv”).config();在应用程序代码的第1行(或尽可能靠近其他要求)

由于您刚刚在此处发布了应用程序id和密码,现在每个人都有一个有效的应用程序访问令牌。。。您需要立即在应用程序仪表板中重置应用程序机密。这确实有帮助,谢谢!当人们遇到这种情况时,我现在建议总是尝试OAuth提供给您的访问令牌。即使我要求提供for email scope和me?fields=电子邮件,facebook仍然不会返回电子邮件!对于像我这样的人来说,2018年我在使用spring social facebook 2.0.3解决问题时遇到了同样的问题,我必须在application.yml中添加范围:email、public_profile,并更改userInfoUri:
userInfoUri: https://graph.facebook.com/me?fields=email,name