【发布时间】:2011-05-21 15:05:36
【问题描述】:
通过oauth登录后是否可以获取用户电子邮件?页面可能会问他是否想在我的应用程序中分享他的电子邮件?或者任何允许的信息是 url http://api.twitter.com/1/users/show/test.xml (没有电子邮件)返回的内容?
【问题讨论】:
通过oauth登录后是否可以获取用户电子邮件?页面可能会问他是否想在我的应用程序中分享他的电子邮件?或者任何允许的信息是 url http://api.twitter.com/1/users/show/test.xml (没有电子邮件)返回的内容?
【问题讨论】:
不。出于安全原因,Twitter api 不共享电子邮件地址。
更新:Twitter 已添加此功能。 Look at @collerek's answer.
【讨论】:
对于任何感兴趣的人来说,这不再是真的了。
按照此答案中的指南为您的 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 中发生了变化。
我正在使用 Twiterizzer 到 C#。我的应用程序已经被列入白名单,所以理论上我可以获得登录用户的电子邮件。
我这样做:
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);
此响应包含UserId 和SreenName。
我的电子邮件代码中缺少什么?
谢谢
【讨论】:
现在您可以获得 twitter 用户电子邮件地址。 结帐完整程序here。
【讨论】: