【发布时间】:2017-05-31 01:33:02
【问题描述】:
我是 oAuth 的新手,但我需要为 Alexa 家庭套件技能集成它。
我正在为此苦苦挣扎,但我知道我需要使用授权码授予。
在谷歌搜索之后,我想我会尝试使用 Laravel Passport 进行设置(我计划构建一个 Web 平台,所以我不将 Laravel 纯粹用于 oAuth)-https://laracasts.com/series/whats-new-in-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 组件,以便只有管理员用户才能看到/使用它们来创建客户端。
【问题讨论】:
标签: laravel oauth-2.0 access-token alexa-skills-kit laravel-passport