Есть ли способ получить идентификатор электронной почты пользователя после проверки его/ее идентификатора Twitter с помощью OAuth?

Я новичок в OAuth и играю с API Twitter. Я могу получить учетные данные пользователя после аутентификации, сделав запрос http://api.twitter.com/1/account/verify_credentials.xml. Ответ содержит идентификатор пользователя, имя экрана и т.д., Но не идентификатор электронной почты.

Возможно ли вообще получить идентификатор электронной почты пользователя?

Обновить

Я считаю, что Facebook предоставляет эту информацию, если вы специально запрашиваете расширенные разрешения . Есть ли что-то подобное для Twitter?

Ответ 1

Пользовательский адрес электронной почты не может быть получен через API. Это преднамеренное дизайнерское решение команды API.

ОБНОВЛЕНИЕ 2015.08.18:

Можно запросить адрес электронной почты у пользователей, но для этого требуется, чтобы ваше приложение было включено в белый список. Подробнее о вызове API см. https://dev.twitter.com/rest/reference/get/account/verify_credentials и эта форма для запроса белого списка вашего приложения.

Ответ 2

Для OutsourceFactor, который написан на Python/Django, я получаю имя пользователя через oAuth1, а затем создаю электронное письмо как "имя пользователя @twitter.com", который гарантированно будет уникальным во всем твиттере. Затем я использую его, чтобы получить хороший UUID, который будет использоваться и связан с моей локальной учетной записью пользователя. То же самое для Yahoo. Google и Facebook используют oAuth2, и они дают мне адрес электронной почты по запросу, который хорош.

Чтобы обеспечить множественные социальные ассоциации с одной учетной записью, я разрешаю ассоциации социальных учетных записей ТОЛЬКО после того, как пользователь локально создал учетную запись и вошел в систему.

Итак, вам нужно сначала создать учетную запись (локальная учетная запись), затем вы можете использовать любой из социальных провайдеров oAuth, чтобы облегчить ваши будущие логины. Это лучший удар для доллара для моего сайта.

В любом случае вы получаете уникальную форму ID из твиттера. Так что просто используйте его. Вы можете запросить адрес электронной почты позже или до объединения.

Ответ 3

Адрес электронной почты обфускается Twitter в своих ответах OAuth. Что всегда было большой проблемой для людей, желающих включить функцию "Регистрация с Twitter".

Совсем недавно (начало 2015 года) Twitter добавил поддержку адресов электронной почты через второй вызов службы, но при определенных, злоупотребляемых условиях.

https://dev.twitter.com/rest/reference/get/account/verify_credentials

Итак, теперь это возможно, но мое мнение заключается в продолжении внедрения единого входа OAuth-only-but-twitter. Они должны быть бойкотированы до тех пор, пока они не поступят нормально, я имею в виду, как каждый другой поставщик OAuth.

Ответ 4

В Android, использующем Fabric, я запрашиваю адрес электронной почты пользователя следующим образом:

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

Ответ 5

Кто сказал, что это невозможно???

Я получил приложение iOS после добавления приложения в приложение. Проверьте мой ответ здесь.

Ответ 6

В моем случае каждый раз, когда я получаю ответ, я получаю уникальный идентификатор аутентификации для каждого пользователя и его же для этого пользователя каждый раз. Поэтому я использовал этот id для создания электронной почты, например [email protected], и проверить, что это уже на моем сайте (в первый раз это не так), а затем зарегистрировать пользователя. Затем, если он войдет в систему во второй раз, я просто снова создаю электронное письмо и проверю, уже ли оно там. Таким образом, мне не нужно сначала создавать локальную учетную запись и идентифицировать его для входа.

Ответ 7

Вот пример того, как получить адрес электронной почты пользователя Twitter в Laravel, а на 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 get the user 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]);

Ответ 8

Добавьте этот код!

$params = array('include_email' => 'true', 'include_entities' => 'false', 'skip_status' => 'true');

`$data = $connection->get('account/verify_credentials', $params); // get the data`

// getting twitter user profile details $twt_id = $data->id; //twitter user id $twt_email = $data->email; //twitter user email

Оформить полную процедуру здесь.

Ответ 9

Кто говорит, что вы не можете получить электронную почту пользователей, флажок "Запросить адрес электронной почты от пользователей" доступен под разрешениями приложений на apps.twitter.com, Поля URL-адресов политики конфиденциальности и условий обслуживания должны быть заполнены в настройках приложения для доступа к функции адреса электронной почты. Если включено, пользователи будут проинформированы через диалог oauth/authorize, что ваше приложение сможет получить доступ к их адресу электронной почты.