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

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

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

обновление

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

9 ответов


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

обновление 2015.08.18:

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


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

обеспечить множественные социальные ассоциации с одиночным учетная запись, Я разрешаю Ассоциации социальных учетных записей только после того, как пользователь локально создал учетную запись и вошел в систему.

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

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


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

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

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

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


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

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


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

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


в моем случае каждый раз, когда я получаю ответ, я получаю уникальный идентификатор аутентификации для каждого пользователя и его же для этого пользователя каждый раз. Поэтому я использовал этот id для создания электронной почты, как unique_id@twitter.com и проверьте, есть ли это уже на моем сайте ( впервые это не так), а затем зарегистрируйте пользователя. Затем, если он входит во второй раз, я просто снова создаю электронное письмо и проверяю, уже ли оно там. При этом мне не нужно сначала заставлять его создавать локальную учетную запись и идентифицировать его для входа в систему.


вот пример того, как получить электронную почту пользователя 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'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`

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

проверка полная процедура здесь.


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