2010-12-07 5 views
7

можно ли получить адрес электронной почты пользователя после того, как он зарегистрировал oauth? может быть, страница может спросить его, хочет ли он поделиться своим письмом в моей заявке? или любая разрешенная информация - это то, что возвращает URL-адрес http://api.twitter.com/1/users/show/test.xml (без электронной почты)?oauth twitter и адрес электронной почты

+0

Возможный дубликат [Есть ли способ получить идентификатор электронной почты пользователя после проверки его идентификатора Twitter с помощью OAuth?] (Http://stackoverflow.com/questions/3599621/is-there-a-way-to-get -an-users-email-id-after-verify-her-twitter-identity-us) – abyx 2011-11-09 05:54:41

ответ

7

№ Аборт Twitter не передает адреса электронной почты по соображениям безопасности.

Обновление: 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»). Параметр описан в твиттере документации: https://dev.twitter.com/rest/reference/get/account/verify_credentials

Вы можете обновить twitter.py бэкенд в библиотеке питон-социальной-AUTH с этим 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

Я использую 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.

Что мне недостает в моем коде для письма?

Thanks

0

Теперь вы можете получить адрес электронной почты пользователя Twitter. Оформление заказа полная процедура here.

Смежные вопросы