我正在使用Laravel 6.7并尝试使用Passport进行用户身份验证。
我可以在用户注册时为他们创建访问令牌。代码如下:
$user = User::create($input);
$user->createToken('auth-token');
此访问令牌的有效期为15分钟,正如我在AuthServiceProvider.php文件boot()
函数中定义的那样:
Passport::personalAccessTokensExpireIn(Carbon::now()->addMinutes(15));
我想使用刷新令牌刷新它,但似乎不知道如何操作。
我到处都找过了(包括Laravel网站),他们都告诉我这样做:
$http = new GuzzleHttp\Client;
$response = $http->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'refresh_token',
'refresh_token' => 'the-refresh-token',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'scope' => '',
],
]);
没有关于值'the-refresh-token'
、'client-id'
和'client-secret'
的含义的任何明确解释。
一个关于堆栈溢出的answer说:
你必须发送旧的refresh-token('refresh_token' => 'the-refresh-token'
),这段代码会产生一个新的token和refresh-refresh。
但是我没有刷新令牌,我正在尝试创建一个。我是否只是创建一个随机字符串?
2条答案
按热度按时间alen0pnh1#
使用口令授予令牌
From:Laravel Docs:密码授予令牌
OAuth2密码授权允许您的其他第一方客户端(如移动的应用程序)使用电子邮件地址/用户名和密码获取访问令牌。
首先需要通过以下方式生成密码授权客户端:
这将给予一个
client_id
和一个client_secret
接下来,您可以在移动的应用程序中实现登录,如下所示:
其结果是:
如果要刷新过期的令牌,需要使用
POST
方法向/oauth/token
发出请求与身体:
将之前的
refresh_token
、client_id
、client_secret
和放入,您将得到包含其他令牌的另一个响应yuvru6vn2#
为了防止超时,您可以像这样调用oauth/token