Laravel中使用Postman实现Google登录的方法及访问令牌复用问题
Laravel 配合 Postman 完成Google登录模块开发指南(已获取Google Access Token场景)
一、整套登录流程开发步骤
1. Laravel 端前置配置
- 安装Laravel官方Socialite扩展:
composer require laravel/socialite - 配置Google OAuth参数:在
config/services.php中添加Google服务配置
'google' => [ 'client_id' => env('GOOGLE_CLIENT_ID'), // Google Cloud控制台获取的Client ID 'client_secret' => env('GOOGLE_CLIENT_SECRET'), // Google Cloud控制台获取的Client Secret 'redirect' => env('GOOGLE_REDIRECT_URI'), // 你配置的回调地址 ],
然后在项目.env文件中填入对应三个参数的实际值
- 确保用户模型
app/Models/User.php已经引入Sanctum的HasApiTokenstrait(用于生成Laravel端业务token):
use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; // 其余原有代码 }
- 新增Google登录回调路由,在
routes/api.php中添加如下代码:
use Laravel\Socialite\Facades\Socialite; use App\Models\User; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; Route::post('/auth/google/callback', function () { // 从请求中获取Postman传入的Google Access Token $googleUser = Socialite::driver('google')->userFromToken(request()->input('access_token')); // 用户存在则直接返回,不存在则创建新用户 $user = User::firstOrCreate( ['email' => $googleUser->getEmail()], [ 'name' => $googleUser->getName(), 'google_id' => $googleUser->getId(), 'avatar' => $googleUser->getAvatar(), 'password' => Hash::make(Str::random(16)), ] ); // 生成Laravel端业务访问token返回 return response()->json([ 'code' => 200, 'message' => '登录成功', 'user_info' => $user, 'access_token' => $user->createToken('google_login_token')->plainTextToken, 'token_type' => 'Bearer' ]); });
注意:如果Postman请求时出现跨域报错,可修改
config/cors.php配置,将paths数组加入api/*,allowed_origins临时设为*用于测试,上线时需替换为正式业务域名。
2. Postman 端操作步骤
- 新建POST请求,请求地址填写你的Laravel服务地址+/api/auth/google/callback,例如
http://127.0.0.1:8000/api/auth/google/callback - 切换到Headers标签页,添加请求头
Accept: application/json,确保接口返回JSON格式而非网页 - 切换到Body标签页,选择
x-www-form-urlencoded或者form-data格式,添加参数access_token,值填入你已经生成的Google Access Token - 点击发送按钮,正常情况会返回上述代码定义的用户信息和Laravel端业务token
- 登录有效性验证:新建一个需要登录权限的业务接口请求,在Headers中添加
Authorization: Bearer 上一步获取的access_token,发送请求后能正常拿到权限内的返回结果,说明整套Google登录流程已经调试完成。
二、Google Access Token 跨模块使用说明
你已经获取的Google Access Token可以在其他模块使用,只需满足两个前提:
- 权限匹配:token的可用范围完全由你申请OAuth 2.0凭证时勾选的
scope决定,比如你申请时仅勾选了用户信息相关scope,该token就只能用来获取Google用户公开信息,无法调用Google Drive、Google Calendar等其他Google服务接口,其他模块如果需要调用对应服务,要确保申请token时已经添加了对应scope。 - 有效期内:Google Access Token默认有效期只有1小时,过期后会失效,需要用对应的Refresh Token重新换取新的Access Token才能继续使用。
内容的提问来源于stack exchange,提问作者Hiral Soni
相关产品推荐
相关产品推荐

