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

Laravel中如何将请求返回的access_token存入MySQL数据库

实现Laravel中存储access_token到MySQL的步骤

假设你的迁移表包含access_token字段(可按需添加expires_at等辅助字段),按以下步骤完成存储:

1. 创建对应的数据模型(Model)

如果还未创建模型,执行Artisan命令生成:

php artisan make:model AccessToken

在生成的app/Models/AccessToken.php中,设置可批量赋值的字段(确保包含access_token,有其他字段如过期时间也一并添加):

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class AccessToken extends Model
{
    // 允许批量赋值的字段
    protected $fillable = ['access_token', 'expires_at'];

    // 若迁移表名不是复数形式(比如表名为access_token而非access_tokens),需指定表名
    // protected $table = 'access_token';
}

2. 在控制器中处理响应并存储

在你发起POST请求的控制器方法里,获取响应后解析数据,调用模型完成存储:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Http;
use App\Models\AccessToken;

class YourController extends Controller
{
    public function fetchAndStoreToken()
    {
        // 发起POST请求获取token
        $response = Http::post('https://your-token-api-url.com', [
            'grant_type' => 'client_credentials',
            'client_id' => env('API_CLIENT_ID'),
            'client_secret' => env('API_CLIENT_SECRET'),
            // 其他必要参数
        ]);

        // 检查请求是否成功
        if ($response->successful()) {
            $tokenData = $response->json();

            // 提取access_token和可能的过期时间
            $accessToken = $tokenData['access_token'];
            // 若API返回过期秒数,计算绝对过期时间
            $expiresAt = now()->addSeconds($tokenData['expires_in']);

            // 存储token:用updateOrCreate避免重复存储,可根据业务需求改为create
            AccessToken::updateOrCreate(
                ['id' => 1], // 假设只存一条全局token,用固定id或其他唯一标识
                [
                    'access_token' => $accessToken,
                    'expires_at' => $expiresAt
                ]
            );

            return response()->json(['message' => 'Token存储成功']);
        }

        // 请求失败的处理
        return response()->json(['message' => '获取Token失败'], $response->status());
    }
}

3. 可选:业务逻辑细节优化

  • 若需存储多组token(比如不同客户端/用户的),调整updateOrCreate的查询条件,比如用client_id作为唯一标识
  • 添加异常捕获处理网络请求异常:
try {
    $response = Http::post('https://your-token-api-url.com', [...]);
    // 后续存储逻辑
} catch (\Exception $e) {
    return response()->json(['message' => '请求外部API失败:' . $e->getMessage()], 500);
}
  • 若迁移表包含token_type等其他字段,需在Model的$fillable和存储数组中同步添加对应字段

内容的提问来源于stack exchange,提问作者Julio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:50:13