Вопросы по OAuth Client

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Вопросы по OAuth Client

Сообщение Vespertilio »

Поставил этот (https://github.com/yiisoft/yii2/tree/0d ... authclient) клиент, все работает. Разве что не соответствие было в названии файлов в виджете на github и доке и тех что установились через composer (OAuthChoice и Choice).

Собственно вопрос: есть ли демка как это правильно должно все работать? OAuth клиент возвращает атрибуты типа id, firstname, lastname, email, language - это все понятно, но хотелось бы какой-то рабочий пример. Как это вписать в регистрацию и/или логин правильно?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вопросы по OAuth Client

Сообщение samdark »

Про несоответствие, если не трудно, закиньте на github.

Демки нет. Демки в релизе будут.

Вписать примерно так:

1. Пароль уже проверили на стороне сервиса.
2. Ищем по базе запись.
3. Если есть — логиним.
4. Если нет, пишем в базу и логиним.

Собственно, всё.
Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Re: Вопросы по OAuth Client

Сообщение Vespertilio »

Sam Dark писал(а):Про несоответствие, если не трудно, закиньте на github.

Демки нет. Демки в релизе будут.

Вписать примерно так:

1. Пароль уже проверили на стороне сервиса.
2. Ищем по базе запись.
3. Если есть — логиним.
4. Если нет, пишем в базу и логиним.

Собственно, всё.
Насчет несоответсвия - моя ошибка, я похоже смотрел старый коммит, который исправили, так что на созданную мной по ошибке issue не обращайте внимания.

По поводу клиента, я примерно так и сделал. Проверяю по email, но с регистрацией пока не разобрался. Получаеться надо редиректить нового пользователя на страницу регистрации, чтобы он указал там дополнительные данные (логин/пароль). Если вписать редирект в функцию successCallback в контроллере, то будет редиректить в popup окошке, а как сделать перенаправление в основном окне? Не могу найти тот участок кода что отвечает за редирект на главную, да и менять в самом экстеншене что-то не правильно будет. Как вариант можно конечно зарегать пользователя автоматом и самому сгенерировать пароль и логин по имени в email? и выслать данные на почту, но все равно хотелось бы знать.

P.S.
Нет ли у вас готового кода описания OAuth под VK?

Плюс ко всему получаеться полезен только email как идентификатор, а что делать с id от сервиса? или не использовать его вовсе?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вопросы по OAuth Client

Сообщение samdark »

Нет. Зачем вам вообще логин-пароль? Внешний сервис уже проверил всё.

Под VK у меня кода нет. id можно хранить в табличке привязок на случай если сервис не проверяет почту на уникальность или если хочется давать ссылку на аккаунт.
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Вопросы по OAuth Client

Сообщение Nafania »

Есть предложение сделать свойство _normalizeUserAttributeMap публичным в yii\authclient\BaseClient для того, чтобы мапить поля соц. сетей в конфиге, а не экстендить каждый класс, ради того, чтобы переназначить имена полей.
Так же было бы неплохо, если бы, если свойство будет публичным, то была бы в нем поддержка замыканий.
Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Re: Вопросы по OAuth Client

Сообщение Vespertilio »

Подскажите как шаблонизировать этот виджет? Во вьюхе в файлах только код попап окошка с редиректом.
Последний раз редактировалось Vespertilio 2014.04.27, 10:52, всего редактировалось 1 раз.
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Вопросы по OAuth Client

Сообщение Nafania »

Vespertilio писал(а):Подскажите как шаблонизировать этот виджет? Во вьюхе в фалах только код попап окошка с редиректом.
AuthChoict свой поставьте и метод поменяйте renderMainContent
Но проще в css
kutsanov
Сообщения: 165
Зарегистрирован: 2012.02.08, 15:22

Re: Вопросы по OAuth Client

Сообщение kutsanov »

Уже совсем мозг взорван

Код: Выделить всё

        $oauthClient = \Yii::$app->authClientCollection;
        $client = $oauthClient->getClient('facebook');

        $code = $_GET['code'];
        $user = $client->getUserAttributes();

        Core::dump($user);
 
Тут все понятно
выведет name и id
а если мне нужно какое-либо другое свойство? где его брать?
конкретно сейчас нужен email
ЗАранее благодарен
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вопросы по OAuth Client

Сообщение samdark »

Чтобы Facebook отдал email, его надо запросить. В OAuth это называется scope. Настраивается так:

Код: Выделить всё

'facebook' => [
    'class' => 'yii\authclient\clients\Facebook',
    'clientId' => 'aaa',
    'clientSecret' => 'bbb',
    'scope' => 'email',
],
 
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Re: Вопросы по OAuth Client

Сообщение Akulenok »

А с vk.com как e-mail запросить? если никак то как решаете эту проблему?
ភាសាខ្មែរ Yii2 - это кайф!
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Вопросы по OAuth Client

Сообщение Onotole »

Akulenok писал(а):А с vk.com как e-mail запросить? если никак то как решаете эту проблему?
Точно так же
kutsanov
Сообщения: 165
Зарегистрирован: 2012.02.08, 15:22

Re: Вопросы по OAuth Client

Сообщение kutsanov »

Sam Dark писал(а):Чтобы Facebook отдал email, его надо запросить. В OAuth это называется scope. Настраивается так:

Код: Выделить всё

'facebook' => [
    'class' => 'yii\authclient\clients\Facebook',
    'clientId' => 'aaa',
    'clientSecret' => 'bbb',
    'scope' => 'email',
],
Спасибо большое!:)
kutsanov
Сообщения: 165
Зарегистрирован: 2012.02.08, 15:22

Re: Вопросы по OAuth Client

Сообщение kutsanov »

только не работает:(
я подозреваю, что сам FaceBook запрещает отдавать мыло
То есть дело в FaceBook
kutsanov
Сообщения: 165
Зарегистрирован: 2012.02.08, 15:22

Re: Вопросы по OAuth Client

Сообщение kutsanov »

ЗАРАБОТАЛО!!!
$t = $client->getUserAttributes();
еще раз СПС!
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Re: Вопросы по OAuth Client

Сообщение Akulenok »

Onotole писал(а):
Akulenok писал(а):А с vk.com как e-mail запросить? если никак то как решаете эту проблему?
Точно так же
А если аккаунт без email (регались по телефону)
как решаете?
ភាសាខ្មែរ Yii2 - это кайф!
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Вопросы по OAuth Client

Сообщение Onotole »

Akulenok писал(а):
Onotole писал(а):
Akulenok писал(а):А с vk.com как e-mail запросить? если никак то как решаете эту проблему?
Точно так же
А если аккаунт без email (регались по телефону)
как решаете?
Прошу пользователя указать мыло
Ответить