我刚接触OAuth并尝试使用Twitter API。通过向http://api.twitter.com/1/account/verify_credentials.xml
发送请求,我能够获取用户的凭证,其中包含用户ID、用户名等信息,但没有电子邮件地址。
是否有可能获取用户的电子邮件地址?
更新
我相信Facebook可以在您特别请求扩展权限时提供此信息。Twitter是否有类似的功能呢?
我刚接触OAuth并尝试使用Twitter API。通过向http://api.twitter.com/1/account/verify_credentials.xml
发送请求,我能够获取用户的凭证,其中包含用户ID、用户名等信息,但没有电子邮件地址。
是否有可能获取用户的电子邮件地址?
更新
我相信Facebook可以在您特别请求扩展权限时提供此信息。Twitter是否有类似的功能呢?
API团队有意设计,无法通过API检索用户的电子邮件地址。
更新 2015.08.18:
可以请求用户的电子邮件地址,但需要将您的应用程序列入白名单。有关API调用的详细信息,请参见https://dev.twitter.com/rest/reference/get/account/verify_credentials,如果要请求应用程序被列入白名单,请访问此表格。
TwitterAuthClient authClient = new TwitterAuthClient();
authClient.requestEmail(session, new Callback<String>() {
@Override
public void success(Result<String> result) {
// Do something with the result, which provides the email address
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});
请参见http://docs.fabric.io/android/twitter/request-user-email-address.html
在Twitter的OAuth响应中,电子邮件地址被混淆。对于想要包含“使用Twitter注册”的功能的人来说,这一直是一个大问题。
最近(2015年初),Twitter通过第二个服务调用添加了电子邮件地址支持,但在某些被滥用的情况下。
https://dev.twitter.com/rest/reference/get/account/verify_credentials
现在已经有可能实现每个提供程序但Twitter的OAuth单点登录,但我的意见是继续实施。他们必须被抵制,直到他们表现得像其他每个OAuth提供商一样正常。
这是一个在Laravel中获取Twitter用户电子邮件的示例,您可以在coditty.com上找到使用Angular+Laravel的完整示例。
// get token secret from db
$token = TwitterTokens::where('oauth_token', $request->input('oauth_token'))->first();
// open twitter connection
$connection = new \Abraham\TwitterOAuth\TwitterOAuth(
$this->twitter_consumer_key,
$this->twitter_secret,
$request->input('oauth_token'),
$token->oauth_token_secret// twitter secret from DB
);
// get acces token
$access_token = $connection->oauth("oauth/access_token", ["oauth_verifier" => $request->input('oauth_verifier')]);
// new TwitterOAuth instance to get email
$twitterOAuth = new \Abraham\TwitterOAuth\TwitterOAuth( $this->twitter_consumer_key, $this->twitter_secret, $access_token['oauth_token'], $access_token['oauth_token_secret'] );
// Let's get the user's info with email
$twitterUser = $twitterOAuth->get('account/verify_credentials', ['include_entities' => 'false','include_email'=>'true','skip_status'=>'true',]);
// output user object from twitter in your Log file
Log::info(['user'=>$twitterUser]);
$params = array('include_email' => 'true', 'include_entities' => 'false', 'skip_status' => 'true');
`$data = $connection->get('account/verify_credentials', $params); // get the data`
// 获取 Twitter 用户资料详情
$twt_id = $data->id; //Twitter 用户 ID
$twt_email = $data->email; //Twitter 用户电子邮件
查看完整流程此处.
谁说你不能获取用户邮箱?在apps.twitter.com的应用权限下,有一个“要求用户提供电子邮件地址”的复选框可供选择。为了使访问电子邮件地址功能生效,隐私政策URL和服务条款URL字段必须在应用程序设置中完成。如果启用该功能,用户将通过 oauth / authorize对话框被告知您的应用程序可以访问他们的电子邮件地址。