【问题标题】:oauth twitter and emailoauth 推特和电子邮件
【发布时间】:2011-05-21 15:05:36
【问题描述】:

通过oauth登录后是否可以获取用户电子邮件?页面可能会问他是否想在我的应用程序中分享他的电子邮件?或者任何允许的信息是 url http://api.twitter.com/1/users/show/test.xml (没有电子邮件)返回的内容?

【问题讨论】:

标签: twitter oauth


【解决方案1】:

不。出于安全原因,Twitter api 不共享电子邮件地址。

更新:Twitter 已添加此功能。 Look at @collerek's answer.

【讨论】:

  • 真的与安全有关吗?我的愤世嫉俗者更有可能相信它关于用户的所有权。如果用户同意,几乎所有其他类似的服务提供商都会共享该电子邮件。
  • 我想也可能是。最终结果是一样的。
【解决方案2】:

对于任何感兴趣的人来说,这不再是真的了。

按照此答案中的指南为您的 Twitter 应用申请特殊权限(电子邮件访问): Can we get email ID from Twitter oauth API?

您需要在应用中提供使用条款和隐私政策的链接。然后在权限选项卡上,您可以勾选向用户请求电子邮件地址。

现在,当您查询 Twitter API 时,将“?include_email=true”附加到 url(因此完整的 URL 将是“https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true”)。该参数在推特文档中有描述:https://dev.twitter.com/rest/reference/get/account/verify_credentials

您可以使用此 url 修改更新 python-social-auth 库中的 twitter.py 后端,它也可以工作;)

从 twitter.py 后端的第 35 行开始:

def user_data(self, access_token, *args, **kwargs):
"""Return user data provided"""
return self.get_json(
'https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true',
auth=self.oauth_auth(access_token)
)

并在上面包含 response.get('email','') 几行:

def get_user_details(self, response):
        """Return user details from Facebook account"""
        fullname, first_name, last_name = self.get_user_names(
            response.get('name', ''),
            response.get('first_name', ''),
            response.get('last_name', '')
        )
        return {'username': response.get('username', response.get('name')),
                'email': response.get('email', ''),
                'fullname': fullname,
                'first_name': first_name,
                'last_name': last_name}

【讨论】:

  • 作为记录,python-social-auth 的最新版本已经这样做了(当前版本是 0.2.21)。它在修订版 96fc4d1 中发生了变化。
【解决方案3】:

我正在使用 TwiterizzerC#。我的应用程序已经被列入白名单,所以理论上我可以获得登录用户的电子邮件。

我这样做:

OAuthTokenResponse response = OAuthUtility.GetRequestToken(key, secret, myurl); 
Uri authorizationUrl = OAuthUtility.BuildAuthorizationUri(response.Token);
Response.Redirect(authorizationUrl.AbsoluteUri);

当我收到令牌时:

OAuthTokenResponse response = OAuthUtility.GetAccessToken(key, secret, receivedToken, receivedVerifier);

此响应包含UserIdSreenName

我的电子邮件代码中缺少什么?

谢谢

【讨论】:

    【解决方案4】:

    现在您可以获得 twitter 用户电子邮件地址。 结帐完整程序here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2018-02-07
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多