Есть ли способ получить идентификатор электронной почты пользователя после проверки его / ее личности 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, а затем строю электронное письмо как "[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