我是 oAuth 的新手,但这是我需要为 Alexa 家庭套件技能集成的东西。
我正在为此苦苦挣扎,但我知道我需要使用授权码授予。
在谷歌搜索之后,我想我会尝试使用 Laravel Passport 进行设置(我计划构建一个网络平台,所以我不将 Laravel 纯粹用于 oAuth) - https://laracasts.com/series/whats-新的 laravel-5-3/episodes/13
我从未使用过 Laravel(PHP 新手),但我花了几个小时阅读 Laracast 指南,所以我有一个基本的了解。
我能够使用 Laravel Passport 设置一个 oAuth 服务器,创建一个客户端,使用我在 Alexa 应用程序上配置的客户端 ID、Secret 和 Auth URL,并使 Alexa 帐户链接正常工作。伟大的。
问题是,目前只有一个用户,我。在 Alexa 应用程序中,您只能配置一个客户端 ID 和密钥,而我链接用户的唯一方法是通过 Alexa 在每个操作/请求中传递的访问令牌。
查看 oAuth 表,似乎访问令牌(不再有效:))链接到 user_id:
+-------------------------------------------------- ---------------------------------+---------+------ -----+------+--------+---------+------ ---+----------+----------+ | 编号 | 用户 ID | 客户 ID | 姓名 | 范围 | 撤销| created_at | 更新时间 | 过期_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 - 用户可以通过 Alexa 应用程序使用他们的凭据登录到我的 Laravel 应用程序(Alexa 将传递 state、client_id、response_type、scope 和 redirect_uri 作为查询字符串)
2 - 如果用户通过身份验证,我的 Laravel 应用程序将生成一个授权码并将其传递回 Alexa,包括状态
3 - Alexa 使用该代码然后请求访问令牌和刷新令牌
4 - 生成访问令牌时,它链接到该用户(客户)的 user_id,而不是创建客户端(我)的 user_id
5 - 刷新访问令牌时,再次应用第 4 步。
我希望以上内容是有道理的,因为我真的很难把它用语言表达出来。我对 oAuth 的理解也完全有可能搞砸了。
如果我能完成上述步骤,我相信我可以轻松创建一个 API/方法,让我可以使用 SQL 查询来确定将访问令牌分配给哪个用户。
我还应该能够锻炼如何显示 oauth vue 组件,以便只有管理员用户能够查看/使用它们来创建客户端。