【问题标题】:Laravel Passport - Grant Type Not SupportedLaravel Passport - 不支持授权类型
【发布时间】:2017-05-14 22:01:27
【问题描述】:

我已经按照文档安装了 Laravel Passport,并且我修改了所有需要的代码区域。

我正在设置密码授予令牌,以便用户在使用网站的用户名和密码登录时能够获得 API 令牌。不过,当涉及到 grant_type 时,我遇到了一个问题。 出于某种原因,Laravel 抱怨授权类型无效。

{
  "error": "unsupported_grant_type",
  "message": "The authorization grant type is not supported by the authorization server.",
  "hint": "Check the `grant_type` parameter"
}

这些是我发布到/oauth/token的字段

client_id = 4
client_secret = SMiYE7XqDNtXKQnmkYmFnXxfAaV83vRhnJ9zwCtZ
username = jcrawford@domain.com
password = **************
grant_type = password
scope = *

我已经运行php artisan passport:install,我也尝试运行php artisan passport:client --password

两个命令都有效,并且都创建了客户端和机密,但是,我似乎无法克服有关 grant_type 的错误。

有什么建议可以解决这个问题,以便密码授予令牌对我有用?

【问题讨论】:

    标签: laravel-5.3 laravel-passport


    【解决方案1】:

    看来您必须将参数作为表单数据发送,而不是像我正在做的那样在标题中发送......新手错误!

    【讨论】:

    • 我目前遇到了同样的问题,我把所有的参数/选项都放在了邮递员的标题部分,所以你说我把所有的都放在了正文部分?
    • 更正它必须像表单数据一样进入正文。
    【解决方案2】:

    初始网址

    https://restfulapi.test/oauth/authorize?client_id=3&redirect_url=http://restfulapi.test?response_type=code
    

    解决方案

    https://restfulapi.test/oauth/authorize?client_id=3&redirect_url=http://restfulapi.test&response_type=code
    

    我必须将 response_type 之前的问号替换为 &

    【讨论】:

    • @SurajRao ROBO-REVIEWERS:仔细审查。他没有发布解决方案的链接或提出新问题(正如您的复制/粘贴文本似乎暗示的那样)。他通过在response_type 参数之前将? 更改为& 来回答这个问题。
    【解决方案3】:

    我正在使用 Postman,并且我已将所有参数放在 Params 中。邮递员显示以下响应

    {
        "error": "unsupported_grant_type",
        "message": "The authorization grant type is not supported by the authorization server.",
        "hint": "Check the `grant_type` parameter"
    }
    

    现在我把所有参数都放在 Body 中,然后按下 Send 按钮,效果很好。

    【讨论】:

      【解决方案4】:

      对我来说,问题是我没有使用Request $request,我使用的是我创建的RegisterRequest $request。

      【讨论】:

      • 这也是我的问题。所以我最终没有使用$request,而是使用request(),所以我仍然可以使用我的表单请求类来验证数据。
      【解决方案5】:

      阅读 Laravel 文档为我减轻了很多压力。 oauth\token 用于使用指定的授权类型检索令牌,路由将返回包含 access_token、refresh_token 和 expires_in 属性的 JSON 响应。 expires_in 属性包含访问令牌过期前的秒数 (ref) 你的意思是

      1. 安装护照
      2. 发布服务提供者和迁移并迁移。
      3. 设置登录/注册路径以创建帐户和登录。
      4. 在您的用户模型中,从 use Laravel\Passport\HasApiTokens 添加HasApiTokens;
      5. 在登录方法的响应中,将令牌添加为响应的一部分。
      6. 在 postman 上测试您的响应

      【讨论】:

        猜你喜欢
        • 2017-07-27
        • 2017-05-31
        • 2017-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-27
        • 2022-01-08
        • 2017-06-02
        相关资源
        最近更新 更多