Intereting Posts
Получить часть URL-адреса Проблема обратного вызова жизненного цикла при расширении пользовательского объекта FOSUserBundle Получение всех данных в одном запросе и обработке в PHP и повторение запросов для каждой части данных Проблема подключения к базе данных sqlite с использованием php Обновите div с помощью php-данных каждые 10 секунд, используя jQuery Определение, не возвращаются ли строки из подготовленного состояния Пример веб-службы php Решение для «Неустранимая ошибка: максимальный уровень вложенности функции« 100 »достигнут, прерван!» В PHP Запуск и остановка PHP-скрипта с веб-страницы администрирования отправка пользователю mesage путем передачи их идентификатора в модальный блок Сохранение сеанса с помощью Curl и PHP Как разбить строку из содержимого сетки и добавить элемент html Laravel 5 Socialite – ошибка cURL 77: проверка сертификатов ошибок подтвердите адрес электронной почты .edu или .ac mysql_connect VS mysql_pconnect

API Twitter: не получение электронной почты пользователя – Yii2

Я получаю ошибку, как

Неизвестное свойство – yii \ base \ UnknownPropertyException

Установка неизвестного свойства : yii \ authclient \ clients \ Twitter :: requestEmail

Всякий раз, когда я 'requestEmail' => 'true', в 'authClientCollection' => [ для components в web.php

web.php

 $config = [ . . 'components' => [ . . 'authClientCollection' => [ 'class' => 'yii\authclient\Collection', 'clients' => [ 'twitter' => [ 'class' => 'yii\authclient\clients\Twitter', 'requestEmail' => 'true', 'consumerKey' => 'IFK2OMG0rKIFK2Jt4rLvw', 'consumerSecret' => 'ImTprQzaOMG0rKZsZiPDIvwIFK2aOMG0rKZsZiPD', ], ], ], ], 

UsersController.php (контроллер)

 class UsersController extends CommonController { . . public function actions() { return [ . . 'auth' => [ 'class' => 'yii\authclient\AuthAction', 'successCallback' => [$this, 'oAuthSuccess'], ], ]; } . . public function oAuthSuccess($client) { // get user data from client $userAttributes = $client->getUserAttributes(); var_dump($userAttributes); die; // do some thing with user data. for example with $userAttributes['email'] } } 

login.php (Просмотр)

 . . <p class="text-center"> <?= yii\authclient\widgets\AuthChoice::widget([ 'baseAuthUrl' => ['/users/users/auth'] ]) ?> </p> . . 

Но, как только я 'requestEmail' => 'true', строку 'requestEmail' => 'true', из web.php . Работает. Я получаю все необходимые данные, кроме email . Но проблема в том, что я не получаю email пользователя, пытающегося войти в систему. Любая идея, как я могу получить. Любой намек / предложение будет большой помощью для меня. Благодарю.

Наконец, я понял.

Этот ответ предназначен для тех, кто только что установил API Twitter или застрял в середине .

Выполните шаг за шагом.

1) Если вы уже создали « Ключ потребителя (API-ключ) » и « Секрет потребителя (секрет API) ». Затем, прямо до пункта 5. Else. Для запуска этой команды php composer.phar require --prefer-dist yiisoft/yii2-authclient "*" в вашей системе. И, сгенерируйте « Ключ потребителя (API-ключ) » и « Секрет потребителя (секрет API) ». Следуйте за созданием новой приложения App & Twitter App Documentation

2) В web.php

 $config = [ . . 'components' => [ . . 'authClientCollection' => [ 'class' => 'yii\authclient\Collection', 'clients' => [ 'twitter' => [ 'class' => 'yii\authclient\clients\Twitter', 'consumerKey' => 'Generated Consumer Key (API Key)', 'consumerSecret' => 'Generated Consumer Secret (API Secret)', ], ], ], ], 

3) В YourController.php (Контроллер): добавьте раздел auth в actions() функции actions() И, функция oAuthSuccess($client) (Как я объявил)

 class UsersController extends CommonController { . . public function actions() { return [ . . 'auth' => [ 'class' => 'yii\authclient\AuthAction', 'successCallback' => [$this, 'oAuthSuccess'], ], ]; } . . public function oAuthSuccess($client) { // get user data from client $userAttributes = $client->getUserAttributes(); var_dump($userAttributes); die; // do some thing with user data. for example with $userAttributes['email'] } . . } 

4) В YourView.php (View)

 <?= yii\authclient\widgets\AuthChoice::widget([ 'baseAuthUrl' => ['/users/users/auth'] ]) ?> 

5) Отправьте заявку на поддержку в твиттер для белого списка. Выберите I need access to special permissions и заполните поле и отправьте его.

6) Через несколько минут / часов вы получите сообщение электронной почты / тему « Запросить доступ к электронной почте ». Электронная почта сообщит вам, чтобы вы зашли на сайт apps.twitter.com .

После успешного входа в систему,

  • нажмите на свое Application Name .
  • Перейдите на вкладку « Настройки », заполните поля « Privacy Policy URL и « Terms of Service URL . Сохраните его с помощью кнопки « Update Settings .
  • Перейдите на вкладку « Разрешения », установите флажок « Request email addresses from users . И сохраните его с помощью кнопки « Update Settings .
  • Перейдите на вкладку « Ключи и токены доступа » и снова « Восстановите ключ и секрет клиента » в разделе « Application Actions ».
  • После восстановления Consumer Key (API Key) и Consumer Secret (API Secret) сохраните его в файле Web.php .
  • Не забудьте следить за последними 2 очками в этом разделе.

В конце,

7) Перейти в подкаталоги:

Root Folder -> vendor -> yiisoft -> yii2-authclient -> clients -> Twitter.php

Twitter.php

+ Изменить

 protected function initUserAttributes() { return $this->api('account/verify_credentials.json', 'GET'); } 

к

 protected function initUserAttributes() { return $this->api('account/verify_credentials.json', 'GET', ['include_email' => 'true']); } 

[ Примечание. Я использую Yii2-App-Basic. В Yii2-App-Advanced, только путь к файлу будет изменен. ]

Поиск по сайту :

  • yii2-каркасного facebook-и-Google-Логин-используя-authclient-не-работу
  • твиттер-апи-получить пользователя по электронной почте