Laravel 护照授权书

Laravel 护照授权书,laravel,laravel-5,oauth,laravel-passport,Laravel,Laravel 5,Oauth,Laravel Passport,我想我在试图让authorization\u codegrant工作时错过了一些东西。我已成功安装passport,密码授予和客户端凭据授予均有效。另一个团队希望与我们的API集成,我们需要跟踪哪些用户做了哪些事情(客户端凭据授权绑定到单个用户帐户) 当我尝试向/oauth/authorize发出GET请求时,我的API返回了一个401错误,我认为这是错误的,但是当我查看passport源代码时,我在passport的: 为什么授权路由需要检查用户是否通过auth中间件登录?我希望用户明确表示不

我想我在试图让
authorization\u code
grant工作时错过了一些东西。我已成功安装passport,密码授予和客户端凭据授予均有效。另一个团队希望与我们的API集成,我们需要跟踪哪些用户做了哪些事情(客户端凭据授权绑定到单个用户帐户)

当我尝试向
/oauth/authorize
发出GET请求时,我的API返回了一个401错误,我认为这是错误的,但是当我查看passport源代码时,我在passport的:

为什么授权路由需要检查用户是否通过
auth
中间件登录?我希望用户明确表示不会登录以点击此路线。我是否需要亲自拦截请求,请求凭据并登录用户,然后重定向回此路由以获取授权码

更新


使用@Jeffrey下面的评论作为起点,我在意识到
redirect\u uri
查询参数也必须与
oauth\u cient
redirect
属性匹配后,使其起作用,这实际上是有意义的。在您授权不同的应用程序之前,用户应该登录到您的站点(
AuthorizationController
phpDoc说:“授权客户端访问用户的帐户。”),以证明他们能够授权应用程序。对不起,您能详细说明一下吗?我和你以前一样困在同一个地方。例如,当我使用来自facebook或google的oauth时,他们会在弹出/重定向中询问我的凭据。为什么拉威尔的smth不相似?为什么客户端首先要登录(通过密码授权或什么?),然后再次请求授权码?在这一点上,他一定已经有了一个访问令牌,不是吗?@Chris此授权的登录发生在第三方服务上。facebook的弹出窗口实际上是从facebook加载内容的iframe。登录Facebook后,Facebook需要请求用户批准您的应用程序请求。在获得批准后,facebook将使用授权码将用户重定向到您客户端的
重定向
属性,然后您的应用程序可以交换有效的令牌。代码->令牌交换是必要的,因为HTTP是如何工作的,在请求交换之前,发起服务不知道重定向后会发生什么。@Chris我(错误地)假设Facebook正在使用Laravel来处理此交换,这只是我理解Laravel如何处理此交换的一个例子。嗯,我不确定我是否得到了它。1.用户需要一个访问令牌来使用laravel api。2.为了获得访问令牌,他重定向到laravel,请求一个授权码。3.他可以用这个代码交换访问令牌。好的,但是当他需要首先登录(通过授予\类型密码或其他方式获得访问令牌)以请求授权码时,他会登录两次,这显然是没有意义的。我哪里错了?
$this->router->group(['middleware' => ['web', 'auth']], function ($router) {
    $router->get('/authorize', [
        'uses' => 'AuthorizationController@authorize',
    ]);