Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 拉威尔护照邮递员路线后测试_Laravel_Oauth 2.0_Postman_Laravel Passport - Fatal编程技术网

Laravel 拉威尔护照邮递员路线后测试

Laravel 拉威尔护照邮递员路线后测试,laravel,oauth-2.0,postman,laravel-passport,Laravel,Oauth 2.0,Postman,Laravel Passport,我设置了Laravel Passport,并开始创建一些Get路径来获取一些数据,效果很好 现在我正在尝试发布以获取身份验证令牌,该令牌目前不起作用: Route::group(['middleware' => 'auth:api'], function () {; Route::get('users', ['as' => 'users', 'uses' => 'ApiController@users']); Route::post('login/{id}/{n

我设置了Laravel Passport,并开始创建一些Get路径来获取一些数据,效果很好

现在我正在尝试发布以获取身份验证令牌,该令牌目前不起作用:

Route::group(['middleware' => 'auth:api'], function ()
{;
    Route::get('users', ['as' => 'users', 'uses' => 'ApiController@users']);
    Route::post('login/{id}/{name}', ['as' => 'login', 'uses' => 'ApiController@login']);
});
这是我调用的路线(获取路线有效,发布路线无效):

我的ApicController中的方法当前如下所示:

public function login(Request $request, $id, $name)
{
    if($request->isMethod('post'))
    {
        $id   = $request->id;
        $name = $request->name;

        $inquiry = new Inquiry();
        $inquiry->user_id = $id;
        $inquiry->user_name = $name;

        if($inquiry->save())
        {
            return redirect()->route('inquiry.index')->with('success', 'Success.');
        }
        else
        {
            return redirect()->route('inquiry.index')->with('error', 'An error accured.')->withInput();
        }
    }
    else
    {
        dd("Use Post.");
    }
}
我尝试通过以下选项调用它:

编辑

不知何故,我在几个小时后终于得到了这份工作,但还是不明白什么

首先,我做了以下工作:

public function callback(Request $request)
{
    dd($request->code) // this holds a token I need for the code parameter in the post 
...
有了它,我可以获得代码参数的令牌,但我认为有更好的方法来实现这一点

最后,这是我如何获得access+刷新令牌的:


但是必须有更好的方法来获取回调请求的代码标记($request->code),而不是转储并复制它。

问题是,您的登录路由位于一个路由组中,路由组上有auth:api。这意味着用户需要经过身份验证才能进行身份验证。只需删除组外的登录路由,您就可以了。

您应该在
AuthServiceProvider的启动方法中调用
Passport::routes
方法此方法将注册颁发访问令牌和撤销访问令牌、客户端和个人访问令牌所需的路由

public function boot()
{
    $this->registerPolicies();
    Passport::routes();
}

/oauth/authorize
路由已由
Passport::routes
方法定义。您不需要手动定义此路线。

那么完整的路线会是什么样子呢?目前我运行的是代客泊车,所以我的url看起来像这样:
http://79f123saf.ngrok.io
,所以我尝试了这个网址:
http://79f123saf.ngrok.io/api/oauth/authorize
还有这个
http://79f123saf.ngrok.io/oauth/authorize
使用我在上面的问题中发布的选项,但我在
/oauth/authorize
上收到一条
令牌不匹配异常
错误消息,在
上收到一条
NotFoundHttpException
/api/oauth/authorize
因此,我的AuthServiceProvider中确实有正确的引导方法。您可以将其与会话一起保存或存储在数据库中