如何使用 Hybridauth 获取 Twitter 用户的电子邮件?

Posted

技术标签:

【中文标题】如何使用 Hybridauth 获取 Twitter 用户的电子邮件?【英文标题】:How to get the Twitter user's email using Hybridauth? 【发布时间】:2012-12-14 08:07:44 【问题描述】:

任何机构都可以帮助如何获取 Twitter 电子邮件 我在 php codeigniter 中使用这个 link 在这里我得到我的信息,除了电子邮件。 那么如何获取邮件呢? 我们应该在配置文件中指定任何范围吗?

【问题讨论】:

【参考方案1】:

你不能。

Twitter API 不提供对用户电子邮件地址的访问权限


这是来自 Twitter 员工的 response to this same question

API 不会向您返回电子邮件地址。如果您对用户的电子邮件地址感兴趣,则必须在自己的应用程序中向用户索取,这是一种完全不同的行为。

【讨论】:

你错了。 Twitter确实允许。检查我的anwser ***.com/a/41943905/3193958 根据上述评论,这个答案现在在 2017 年是错误的。它不应该是公认的答案了。【参考方案2】:

我迟到了几年才回答这个问题,但无论如何我都会回答。

你可以!!!

查看link,该问题已得到解决和答复。

基本上,您首先需要通过提供您的隐私政策 url 和条件条款 url 从 twitter 开发者帐户获得更高的权限。

在获得 twitter 开发支持的电子邮件访问权限后应用此步骤。

/public_html/application/config/hybridauthlib.php

并添加:"includeEmail" => true 到 Twitter 提供商。

"Twitter" => array (
"enabled" => true,
"keys" => array ( "key" => "Your_Twitter_App_Key", "secret" => "Your_Twitter_Secret_Key" ),
"includeEmail" => true,
)

【讨论】:

您还必须为用户电子邮件地址请求额外的权限。在权限部分链接apps.twitter.com/app【参考方案3】:

现在应该可以了。首先,将您的应用列入白名单。

https://support.twitter.com/forms/platform70 [我已经为 DEMO LINK 添加了一个 youtube 链接,并在 github 中为 APPLICATION URL 添加了我的应用程序 url] 并点击了“提交”按钮。

接下来,您将收到来自 twitter 的第一封电子邮件(如果您没有收到来自 twitter 的电子邮件,请重新填写表格并再次发送)说“感谢您与我们联系”。然后几个小时后您会收到第二封电子邮件说该 url 应用程序已列入白名单。

一旦他们说您的应用已列入白名单,请在 Twitter 开发者门户中更新您的应用设置。登录到 apps.twitter.com 并:

在“设置”选项卡上,添加服务条款和隐私政策 URL 在“权限”选项卡上,将令牌的范围更改为请求电子邮件。只有在您的应用被列入白名单后才能看到此选项。

接下来,您可能需要在https://apps.twitter.com 中重新生成您的访问令牌。同时使用https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true 来获取用户的电子邮件地址

【讨论】:

【参考方案4】:

我使用的是 HybridAuth 库的 CodeIgniter 版本,并且在这个文件中

app/application/third_party/hybridauth/Hybrid/Providers/Twitter.php

修改了这一行

$response = $this->api->get( 'account/verify_credentials.json' );

到下面一个

$response = $this->api->get( 'account/verify_credentials.json',['include_entities' => 'true', 'skip_status' => 'true', 'include_email' => 'true'] );

另外,在返回用户配置文件之前添加了以下行

$this->user->profile->email      = (property_exists($response,'email'))?$response->email:"";

并开始接收电子邮件 ID

【讨论】:

我可能会创建自己的修改过的提供程序实现,而不是更改库的基本文件,并从 Twitter 继承并进行所需的修改。让您在以后将更新应用到 Hybridauth 时变得更容易。

以上是关于如何使用 Hybridauth 获取 Twitter 用户的电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

HybridAuth 不适用于 ajax

了解使用 HybridAuth 时的 base_url 参数

HybridAuth:如何为现有用户请求额外权限?

Facebook 使用 HybridAuth 登录显示错误您无法直接访问此页面

使用自定义 php 会话路径时,HybridAuth 未进行身份验证

您无法直接访问此页面 - HybridAuth 社交登录