我们可以从 Twitter oauth API 获取电子邮件 ID 吗?
Posted
技术标签:
【中文标题】我们可以从 Twitter oauth API 获取电子邮件 ID 吗?【英文标题】:Can we get email ID from Twitter oauth API? 【发布时间】:2014-05-02 20:28:51 【问题描述】:如何获取接受我的 Twitter 申请的用户的电子邮件 ID?
我浏览过很多论坛。但他们已经提到,这是不可能的。这些帖子也超过一年。请问是否可以通过 twitter API 使用 php 获取用户的 email id?
我正在使用以下 URL 获取 Twitter 用户详细信息:
https://api.twitter.com/1.1/account/verify_credentials.json
【问题讨论】:
这里我也会为供应商提到的问题找到解决方案。 (即)如何处理这种情况.. 我在 Twitter 文档中找不到它!仅从 Twitter 社区论坛中找到答案:twittercommunity.com/t/… @PaulDessert 该特定供应商的一名员工在公开forum 上声明他们已经实现了功能但没有记录它。理所当然地,有人(例如功能的开发人员)知道如何使用该功能,尽管它根本没有出现在 API 文档中。这些人也许能够为 Vinoth 这样的人提供他在其他地方找不到的帮助。 截至 2017 年 1 月 7 日,我创建的这个 repo 有效,并向您展示了如何提取用户的电子邮件地址。 github.com/DZuz14/CompleteSignInWithTwitterPHP 【参考方案1】:现在可以通过填写表格来请求elevated permissions:
-
转到https://support.twitter.com/forms/platform
选择“我需要访问特殊权限”
输入应用程序名称和 ID。这些可以通过https://apps.twitter.com/获取——应用ID是点击应用后浏览器地址栏中的数字部分。
权限请求:“电子邮件地址”
提交并等待回复
在您的请求获得批准后,您的 Twitter 应用程序的“权限”部分会添加一个附加权限设置。转到“其他权限”,然后勾选“向用户请求电子邮件地址”复选框。
请注意,用户电子邮件地址必须经过验证,否则 Twitter 将拒绝提供。 (请参阅elevated permissions doc 页面中的 include_email 参数说明。)
【讨论】:
他们真的很容易授予这个权限吗?还是只为已经成功的应用保留? @anges244 似乎他们很容易授予它,至少对于从未抱怨过的开发人员而言。我的应用甚至还不能在线访问,所以他们看不到它。 @aleemb,一旦你有权限,你如何获得电子邮件地址?我用这个额外的权限授权了我的测试用户,但在users/show
响应中的任何地方仍然看不到电子邮件地址。有什么需要添加到请求中的吗?
@tremby 我不确定,但我认为您必须致电 accounts/verify_credentials (dev.twitter.com/rest/reference/get/account/verify_credentials)
仅供参考,我在 Twitter 开发者论坛 (twittercommunity.com/t/…) 上找到了答案。在 PHP 源代码中,我将参数列表指定为 array('include_email'=>true),它在 url 中变为 include_email=1。我将源更改为数组('include_email'=>'true'),它开始工作。多么奇怪的 API!此 url 的前面布尔参数的值 skip_status 记录在案“当设置为 true 时,t 或 1 状态将不会...”。但是 include_email 说“当设置为 true 时将返回电子邮件”。【参考方案2】:
现在您可以从 twitter API 获取用户电子邮件地址,这要容易得多。只需按照以下步骤...
转到Twitter Apps
点击“创建新应用”
填写所有必需的凭据并点击“创建您的 Twitter 应用程序”
现在单击“权限”选项卡 -> 选中“向用户请求电子邮件地址”字段,然后单击“更新设置”。 (检查给定的图片)
现在在您的 PHP 代码中,设置所有应用详细信息并添加此代码!
$params = array('include_email' => 'true', 'include_entities' => 'false', 'skip_status' => 'true');
$data = $connection->get('account/verify_credentials', $params); // get the data
// getting twitter user profile details
$twt_id = $data->id; //twitter user id
$twt_email = $data->email; //twitter user email
全部完成。 希望对你有帮助,祝你好运。 ;)
【讨论】:
找了将近 2 个小时后,这就是解决方案。这应该得到大力支持。我打字时是 2017 年 1 月 7 日。我在互联网上找到的任何其他构造 url 的方法都不起作用。 做同样的事情之后。仍然没有收到电子邮件地址。 也不适合我。还有其他方法吗?我可以在开发阶段请求电子邮件地址吗? 您需要重新生成访问令牌才能从已通过身份验证的用户那里获取电子邮件。这是来自 Twitter 的安全保障。 如果你保存了一个 Twitter 用户,你需要销毁他们在你的 providers 数据库表中的条目。 Twitter 文档是这么说的。但也可以向下滚动查看$connection->get('account/verify_credentials', ['include_email' => true])
返回的字段,因为它位于底部。【参考方案3】:
现在可以从 Twitter 检索用户的电子邮件地址(当然,如果用户允许的话)。
您需要申请将您的应用列入白名单才能接收 xAuth。
点击此处了解更多信息: https://dev.twitter.com/rest/reference/get/account/verify_credentials
【讨论】:
您应该提到“xAuth 不适用于基于 Web 的应用程序”。这就是为什么您的答案不适用于操作的问题。【参考方案4】:是的,您可以获得电子邮件地址。现在可以通过填写一些权限来实现。
1.转到此链接:https://apps.twitter.com/
2.在您创建的应用程序中转到权限选项卡后
3.在您的APP中选择添加权限复选框。
4.成功更新设置后,您可以从Twitter获取电子邮件地址。
如果在某些情况下您无法获取电子邮件地址,请检查您的 Oauth Api 请求网址。
您的请求网址应该是这种类型:https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true
【讨论】:
【参考方案5】:无法从 twitter 获取用户的电子邮件地址。你可以看到它here。您可以在回调页面上打开一个表单页面并在该页面上获取用户的电子邮件地址。用法可以参考here
【讨论】:
Huseyin BABAL:感谢您的回复。我可以知道来自 dev.twitter.com 的链接,我可以向它保证。所以我可以把它展示给客户然后去看看。 谢谢伙计。我会照你说的做的。 Twitter 常见问题解答链接已损坏 :( 看来这可能会改变twittercommunity discussion。它似乎几乎实现但尚未正式记录。 我认为这即将改变:twittercommunity.com/t/….【参考方案6】:这是我在 ASP.Net 中使用 linqtoTwitter 库的方法 http://www.bigbrainintelligence.com/Post/get-users-email-address-from-twitter-oauth-ap
// call verify credentials api
var twitterCtx = new TwitterContext(authTwitter);
var verifyResponse =
await
(from acct in twitterCtx.Account
where (acct.Type == AccountType.VerifyCredentials) && (acct.IncludeEmail == true)
select acct)
.SingleOrDefaultAsync();
if (verifyResponse != null && verifyResponse.User != null)
User twitterUser = verifyResponse.User;
//assign email to existing authentication object
loginInfo.Email = twitterUser.Email;
【讨论】:
您使用的凭据存储是什么?我尝试了他们的代码示例,但只取回“我的”用户帐户信息——而不是刚刚登录的用户的用户信息。以上是关于我们可以从 Twitter oauth API 获取电子邮件 ID 吗?的主要内容,如果未能解决你的问题,请参考以下文章
通过 ServiceStack api 使用 Linq2Twitter 和缓存的 OAuth 令牌
是否有任何 Node.js 客户端库可以对 Twitter、Facebook、Google、LinkedIn 等进行 OAuth 和 OAuth2 API 调用?