You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的HasApiTokens trait(用于生成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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:36:03