关于 Laravel 5.3 Passport oauth:Laravel 5.3 Passport oauth – 单客户端多访问令牌 – Alexa

Laravel 5.3 Passport oauth - Single client multiple access token - Alexa

我是 oAuth 的新手,但我需要将其集成到 Alexa 家庭套件技能中。

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/linking-an-alexa-user-with-a-user-in-your-system

我正在为此苦苦挣扎,但我知道我需要使用授权码授予。

在谷歌搜索之后,我想我会尝试使用 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


如果您将护照用于第一方应用程序,您可以使用密码授予令牌。

先创建密码客户端

1
php artisan passport:client --password

然后在 form_params 和用户凭据中传递客户端 ID 和客户端密码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$http = new GuzzleHttp\\Client;

$response = $http->post('http://your-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => 4,
        'client_secret' => 'asefwwsgaqwsfwghhw3eqrfdhe',
        'username' => '[email protected]',
        'password' => '123456',
        'scope' => '',
    ],
]);

return json_decode((string) $response->getBody(), true);

然后它会返回一个token,并用它来传递给header中的Authorization Bearer your-token