Spring Facebook OAuth没有';不返回用户的电子邮件
下面是关于OAuth的Spring Boot的教程: 在“点击”应用程序中,我添加了: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.
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