我正在 Laravel 中使用 Socialite 来登录 Twitter。
我知道并非所有 Twitter 用户的帐户都附有电子邮件,但对于我的应用程序,用户确实需要电子邮件地址。我可以阻止没有附加电子邮件的人登录,但目前每个用户都将电子邮件字段设置为空。
我正在使用此功能重定向到 Twitter:
return Socialite::driver($provider)->redirect();
我已经尝试过使用这样的范围:
return Socialite::driver($provider)->scopes(['email'])->redirect();
但是 twitter 是唯一不允许范围的提供商。
回调返回其他提供商(如 facebook 和 google)的电子邮件地址,但在使用 twitter 时似乎缺少一些东西。
对于 OAuth1,某处有一个设置可以启用返回电子邮件字段的选项,但由于 twitter 接受 OAuth2,我在 Twitter 开发人员面板中再也找不到此设置。
我将不胜感激,因为有关此主题的大多数信息都已过时。
Twitter 的新 Oauth 2.0 用户身份验证目前(在撰写本答案时)不提供对用户电子邮件地址的访问,并且需要添加额外的范围。这是 Twitter API 路线图上的一个已知功能请求。
您仍然可以使用 OAuth 1.0A 并设置请求用户电子邮件地址的选项。
首先转到您的应用程序的设置。
然后您必须填写隐私政策和条款页面的链接。
之后还启用 OAuth 1.0 en,然后会弹出一个选项,用于接收尝试登录的用户的电子邮件地址。