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



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



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



обновление



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

473   9  

9 ответов:

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

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

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

на OutsourceFactor, который написан на Python/ Django, я получаю имя пользователя через oAuth1, а затем строю электронное письмо как "[email protected]" который гарантированно будет уникальным во всем 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, который все-провайдера-но-твиттер единого входа. Они должны быть бойкотированы, пока они не будут действовать нормально, я имею в виду, как и каждый другой поставщик 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 после белого списка приложения. Проверьте мой ответ здесь.

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

вот пример, как получить Twitter пользователь электронной почты в фреймворк Laravel, и на coditty.com Вы можете найти полный пример с использованием угловых+фреймворк 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 / authorize диалог, что ваше приложение может получить доступ к своему адресу электронной почты.

Comments

    Ничего не найдено.