从 twitter OAuth2 获取电子邮件

问题描述 投票:0回答:3

我正在 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 开发人员面板中再也找不到此设置。

我将不胜感激,因为有关此主题的大多数信息都已过时。

laravel twitter oauth-2.0 twitter-oauth laravel-socialite
3个回答
5
投票

Twitter 的新 Oauth 2.0 用户身份验证目前(在撰写本答案时)不提供对用户电子邮件地址的访问,并且需要添加额外的范围。这是 Twitter API 路线图上的一个已知功能请求。

您仍然可以使用 OAuth 1.0A 并设置请求用户电子邮件地址的选项。


3
投票
在 Twitter 开发人员仪表板中找到了解决方案。

首先转到您的应用程序的设置。

然后您必须填写隐私政策和条款页面的链接。

之后还启用 OAuth 1.0 en,然后会弹出一个选项,用于接收尝试登录的用户的电子邮件地址。


0
投票
目前,OAuth2 始终返回空电子邮件,我切换到 OAuth1,但如果您这样做,您可能会遇到“请求令牌未找到”错误

看看

这个PR

© www.soinside.com 2019 - 2024. All rights reserved.