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', от web.php. Работает. Я получаю все необходимые данные, кроме email, Но, проблема в : Я не получаю email пользователя, пытающегося войти в систему. Любая идея, как я могу получить. Любая подсказка / предложение будет большой помощью для меня. Благодарю.

1

Решение

Наконец-то я понял.

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

Следуйте шаг за шагом.

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

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() И, функция 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 (Посмотреть)

<?= 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 будет изменен только путь к файлу. ]

Связанные Поиск :

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]