如何在 laravel 中使用社交名流和护照创建 REST API

How to create REST API with socialite and passport in laravel

我想创建 REST API,它将使用社交 (google) 登录系统验证用户进入系统的身份。

我正在使用 laravel auth 和 socialite 进行社交身份验证 所以我的路线是这样的

Route::group(['middleware'=>'auth:api'], function(){
  Route::get('hello','ApiTestControler@index');
});

我正在尝试使用 url

访问它

http://localhost:8000/api/hello?token=16Wf313JyO66cgXk6UstxsIzrf0hlt8tsP09i04UczkWysHWoveVcHGhUPz6YTdX

我原以为它会让我登录并显示 ApiTestController index methord

但它向我显示登录页面。 我该如何解决这个问题并使用 API 令牌让用户进行身份验证?

更新

用户迁移table

        $table->increments('id');
        $table->string('name')->unique();
        $table->string('first_name')->nullable();
        $table->string('last_name')->nullable();
        $table->string('email')->unique()->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->boolean('activated')->default(false);
        $table->string('token');
        $table->ipAddress('signup_ip_address')->nullable();
        $table->ipAddress('signup_confirmation_ip_address')->nullable();
        $table->ipAddress('signup_sm_ip_address')->nullable();
        $table->ipAddress('admin_ip_address')->nullable();
        $table->ipAddress('updated_ip_address')->nullable();
        $table->ipAddress('deleted_ip_address')->nullable();
        $table->timestamps();
        $table->softDeletes();

以及config\auth.php

中的auth配置
'guards' => [
        'web' => [
            'driver'   => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver'   => 'token',
            'provider' => 'users',
        ],
      ]

这里的问题是 Laravel 不知道这是一个 api 调用,它认为这是一个网络调用。因此,要解决此问题,您需要在 headers 上添加 application/json :

Content-Type: application/json

Accept: application/json

只要在 headers 上添加 json 并拨打电话,laravel 就会知道这是一个 api 电话!因此它将加载您的 api 控制器。