如何在 laravel 中使用社交名流和护照创建 REST API
Posted
技术标签:
【中文标题】如何在 laravel 中使用社交名流和护照创建 REST API【英文标题】:How to create REST API with socialite and passport in laravel 【发布时间】:2018-05-24 02:15:01 【问题描述】:我想创建 REST API,它将使用社交(谷歌)登录系统来验证用户进入系统。
我正在使用 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->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',
],
]
【问题讨论】:
【参考方案1】:这里的问题是 Laravel 不知道这是一个 api 调用,它认为它是一个 web 调用。因此,要解决此问题,您需要在标题中添加application/json
:
Content-Type: application/json
Accept: application/json
只要在标题中添加json
并进行调用,laravel 就会知道这是一个 api 调用!因此它将加载您的 api 控制器。
【讨论】:
那个答案很有帮助。现在我没有按预期登录。但同时它向我展示了Unauthenticated
,即使我提供了正确的令牌现在我的网址是这样的http://localhost:8000/api/hello
,并且在标题token: TOKEN HERE Content-Type: application/json Accept: application/json
中即使提供了正确的令牌值,它也是相同的Unauthenticated
有什么建议吗?我正在添加我的用户迁移表以便更好地理解
我没有使用 laravel 5.5 默认自带的任何路由组。如果你正在制作rest api,它默认添加api
前缀对于身份验证系统,我使用oAuth 2.0'github.com/jeremykenedy/laravel-auth'这是我用作laravel项目的样板
好吧,既然您使用的是 oauth 2.0,那么这不是您所问的另一个问题,嗯,我在您发布的路线上看到了路线分组,所以删除它并尝试查看您是否可以访问!如果是这样,请将我的答案标记为已完成!
如果我删除 api
组,它会抛出 laravel 错误 "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
你看,laravel 默认将所有路由嵌套在 api.php
中,前缀为 api
,所以这是它们的默认值和身份验证你问它使用由命令php artisan make:auth
生成的基本身份验证,抱歉之前评论中的错误
好吧,这肯定是一个身份验证问题,关闭此线程并发布一个新问题!以上是关于如何在 laravel 中使用社交名流和护照创建 REST API的主要内容,如果未能解决你的问题,请参考以下文章