2010-12-07 101 views
7

是否可以在用oauth登錄後獲取用戶電子郵件?可能是頁面可以問他是否要在我的應用程序中分享他的電子郵件?或任何允許的信息是由url http://api.twitter.com/1/users/show/test.xml(沒有電子郵件)返回什麼?oauth twitter和電子郵件

+0

[有沒有辦法在使用OAuth驗證她的Twitter身份後獲取用戶的電子郵件ID?](http://stackoverflow.com/questions/3599621/is-there-a-way-to-get -an-users-email-id-after-verifying-her-twitter-identity-us) – abyx 2011-11-09 05:54:41

回答

7

不是。由於安全原因,Twitter api不共享電子郵件地址。

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

+1

它真的關乎安全嗎?我的憤世嫉俗者更可能相信它關於用戶的所有權。如果用戶同意,幾乎所有其他類似的服務提供商都會共享該電子郵件。 – UpTheCreek 2012-07-14 22:04:21

+2

我想它可能是。最終結果是一樣的。 – 2012-07-26 16:08:54

6

對於任何感興趣的人來說,這是不正確的。

按照該指南中這個答案請求特權(電子郵件服務)爲您的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」)。參數Twitter的文檔中描述:https://dev.twitter.com/rest/reference/get/account/verify_credentials

您可以更新蟒蛇 - 社會 - 身份驗證庫twitter.py後端與此URL修改,它也能工作;)

從線35 twitter.py開始後端:上述

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( '電子郵件', '')幾行:

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} 
0

我正在使用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

我在電子郵件的代碼中缺少什麼?

謝謝

0

現在您可以獲取twitter用戶的電子郵件地址。 結帳完整程序here