腾讯云API调用成功,本地tinker测试失败

腾讯云控制台API调用成功,tinker 报错:“无法验证提供的凭据。请检查您的签名是否正确。”



config/easysms.php

return [
    // HTTP 请求的超时时间(秒)
    'timeout' => 10.0,

    // 默认发送配置
    'default' => [
        // 网关调用策略,默认:顺序调用
        'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,

        // 默认可用的发送网关
        'gateways' => [
            'qcloud',
        ],
    ],

    // 可用的网关配置
    'gateways' => [
        'errorlog' => [
            'file' => '/tmp/easy-sms.log',
        ],
        'qcloud' => [
            'sdk_app_id' => env('QCLOUD_SMS_SDK_APP_ID'),
            'app_key' => env('QCLOUD_SMS_APP_KEY'),
            'sign_name' => 'Aurora奥萝拉公众号',
        ],
    ],
];

tinker测试代码

$sms = app('easysms');
try {
    // 自己的手机号
    $sms->send(151********, [
        'template' => 1315829,   // 在腾讯云配置的"短信正文”的模板ID
        'data' => [1234], // data数组的内容对应于腾讯云“短信正文“里的变量
    ]);
} catch (\Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception) {
    $message = $exception->getException('qcloud')->getMessage();
    dd($message);
}

.env 文件里的 QCLOUD_SMS_SDK_APP_ID 和 QCLOUD_SMS_APP_KEY 数值和腾讯控制台的是一样的。

就做一阵风吧,有温柔也有英勇。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

问题已解决,easy-sms 的版本大于2.0的话使用V3版本腾讯云签名需要使用 secret_id 和 secret_key。 config/easysms.php

// 可用的网关配置
    'gateways' => [
        'errorlog' => [
            'file' => '/tmp/easy-sms.log',
        ],
        'qcloud' => [
            'sdk_app_id' => env('QCLOUD_SMS_SDK_APP_ID'),
            'app_key' => env('QCLOUD_SMS_APP_KEY'),
            'secret_id' => 'QCLOUD_SMS_SECRT_ID',
            'secret_key' => 'QCLOUD_SMS_SECRT_KEY',
            'sign_name' => 'QCLOUD_SMS_SIGN_NAME',
            'templates' => [
                'register' => env('QCLOUD_SMS_TEMPLATE_REGISTER'),
            ]
        ],
    ],

另外,教程3.3节里 app/Http/Requests/Api/VerificationCodeRequest.php 文件的 authorize 方法需要把默认返回值改为 true,否则 Postman 无法获取到数据。

2年前 评论
讨论数量: 3

进入 tinker 之后,尝试 打印 env('QCLOUD_SMS_SDK_APP_ID'),看看是否有值,如果没有,尝试清除缓存

php artisan config:clear
2年前 评论

file

可以打印出 QCLOUD_SMS_SDK_APP_ID,报错依旧。

2年前 评论

问题已解决,easy-sms 的版本大于2.0的话使用V3版本腾讯云签名需要使用 secret_id 和 secret_key。 config/easysms.php

// 可用的网关配置
    'gateways' => [
        'errorlog' => [
            'file' => '/tmp/easy-sms.log',
        ],
        'qcloud' => [
            'sdk_app_id' => env('QCLOUD_SMS_SDK_APP_ID'),
            'app_key' => env('QCLOUD_SMS_APP_KEY'),
            'secret_id' => 'QCLOUD_SMS_SECRT_ID',
            'secret_key' => 'QCLOUD_SMS_SECRT_KEY',
            'sign_name' => 'QCLOUD_SMS_SIGN_NAME',
            'templates' => [
                'register' => env('QCLOUD_SMS_TEMPLATE_REGISTER'),
            ]
        ],
    ],

另外,教程3.3节里 app/Http/Requests/Api/VerificationCodeRequest.php 文件的 authorize 方法需要把默认返回值改为 true,否则 Postman 无法获取到数据。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!