Passport密码授予令牌刷新

时间:2016-11-25 12:01:57

标签: api token laravel-5.3 laravel-passport refresh-token

我执行本课题中描述的步骤:

Laravel's 5.3 passport and api routes

从api的路线一切正常,我可以注册新用户,阅读他们的数据等。

然后在AuthServiceProvider

上添加此命令
  

护照:: tokensExpireIn(碳::现在() - > addMinute(2));   护照:: refreshTokensExpireIn(碳::现在() - > addDays(1));

我在邮局中登录网址 {{url}} / oauth / token

  

正文:application / x-www-form-urlencoded
  {
      grant_type:'密码'
      client_id:{{用户注册的电子邮件}}

      client_secret:{{从移动应用程序生成客户端密码}}
      用户名:{{用户注册的电子邮件}}

      密码:{{用户输入的密码}}
      范围:''   }

成功的回应

  

{
    “token_type”:“持票人”
    “expires_in”:120
    “access_token”:{{access_token}}
    “refresh_token”:{{the refresh_token}}
  }

我尝试将令牌续航时间刷新为一天发送到 {{url}} / oauth / token

ref => https://laravel.com/docs/5.3/passport#refreshing-tokens

邮递员发送

接头:

  

授权:持票人{{access_token}}

     

正文:application / x-www-form-urlencoded
  {
  client_secret:{{从移动应用程序生成客户端密码}}
  grant_type:refresh_token
  refresh_token:{{the refresh_token}}
  client_id:{{用户注册的电子邮件}}

  范围:''   }

预期的回应:

  

{
    “access_token”:{{new access_token}}
    “token_type”:'持票人'     “expires_in”:86400
    “refresh_token”:{{new access_token}}
  }

但它没有按预期工作,响应是

  

{
    “access_token”:{{new access_token}}
    “token_type”:'持票人'     “expires_in”:120
    “refresh_token”:{{new access_token}}
  }

3 个答案:

答案 0 :(得分:2)

因为您使用access_token生成refresh_token。因此它显示access_token的到期时间,即2分钟,由此行设置:

Passport::tokensExpireIn(Carbon::now()->addMinute(2));

答案 1 :(得分:1)

此外,您应该从oauth_clients表中发送客户端ID(id字段整数)...而不是您的客户电子邮件地址

答案 2 :(得分:0)

 public function boot()
    {
        $this->registerPolicies();
        Passport::routes();
        Passport::tokensExpireIn(now()->addDays(1));
        Passport::refreshTokensExpireIn(now()->addDays(1));
        Passport::personalAccessTokensExpireIn(now()->addMonths(6));

    }