Я новичок в oAuth, но мне нужно интегрировать его для навыков домашнего комплекта Alexa.
Я борюсь с этим, но я знаю, что мне нужно использовать предоставление кода авторизации.
После поиска в Google я подумал, что попробую настроить это с помощью Laravel Passport (я планирую создать веб-платформу, поэтому я не использую Laravel исключительно для oAuth) - https://laracasts.com/series/whats-new-in-laravel-5-3/episodes/ 13а>
Я никогда не использовал Laravel (новичок в PHP), но потратил несколько часов на чтение руководств по Laracast, поэтому у меня есть базовое понимание.
Я смог настроить сервер oAuth с помощью Laravel Passport, создать клиент, использовать идентификатор клиента, секретные URL-адреса и URL-адреса аутентификации, которые я настроил в приложении Alexa, и заработала привязка учетной записи Alexa. Отлично.
Проблема в том, что на данный момент есть только один пользователь, я. В приложении Alexa вы можете настроить только один идентификатор клиента и секрет, и единственный способ для меня связать пользователя — это токен доступа, который Alexa передает в каждом действии/запросе.
Глядя на таблицы oAuth, кажется, что токен доступа (уже недействительный :)) связан с user_id:
+------------------------------------------------- ------------------+------------------------+------ -----+------+--------+----------+------------------ ---+------------------------------------+-------+ | идентификатор | идентификатор_пользователя | client_id | имя | области | отозван | created_at | updated_at | expires_at | +------------------------------------------------- ------------------+------------------------+------ -----+------+--------+----------+------------------ ---+------------------------------------+-------+ | b96dbbbe1f52386bc098dcc106309504a1e546ec05d2a5cf8d37b7460e4ba84ec95e7ff2c0a2d037 | 1 | 9 | НУЛЕВОЙ | [] | 0 | 2017-01-16 08:28:18 | 2017-01-16 08:28:18 | 2018-01-16 08:28:18 | +------------------------------------------------- ------------------+------------------------+------ -----+------+--------+----------+------------------ ---+-----------------------------------+-------+
В Laravel просто регистрировать/создавать пользователей, но на данный момент каждый пользователь может создать только своего собственного клиента, что здесь не сработает, поскольку Alexa настроена на использование одного клиента.
Мне нужно найти способ, чтобы:
1. Пользователи могут входить в мое приложение Laravel, используя свои учетные данные через приложение Alexa (Alexa будет передавать состояние, client_id, response_type, область действия и redirect_uri в качестве строки запроса)
2. Если пользователь аутентифицирован, мое приложение Laravel сгенерирует код авторизации и передаст его обратно в Alexa, включая состояние.
3 — Alexa использует этот код, чтобы затем запросить токен доступа и токен обновления.
4 - Когда генерируется токен доступа, он связывается с user_id этого пользователя (клиента), а не с user_id, который создал клиента (меня)
5 — Когда токен доступа обновляется, снова применяется шаг 4.
Я надеюсь, что вышеизложенное имеет смысл, поскольку я действительно изо всех сил пытался выразить это словами. Вполне возможно, что мое понимание oAuth тоже запутано.
Если я смогу выполнить вышеуказанные шаги, я уверен, что смогу легко создать API/метод, который позволит мне определить, какому пользователю назначен токен доступа, используя SQL-запрос.
Я также должен иметь возможность тренироваться, как отображать компоненты oauth vue, чтобы только пользователь-администратор мог видеть/использовать их для создания клиентов.