问题:通过 OneSignal 发送通知时出现 403 禁止错误

问题描述 投票:0回答:1

描述:

尝试使用 Laravel 中的

403 Forbidden
函数发送通知时遇到
OneSignal::sendNotificationToUser
错误。该错误消息表明,由于授权标头中的 API 密钥丢失或无效,请求被拒绝。以下是异常的错误消息:

Client error: `POST https://onesignal.com/api/v1/notifications` resulted in a `403 Forbidden` response:
{"errors": ["Access denied. Please include an 'Authorization: Basic ...' header with a valid API key"]}

代码示例:

这是我用来发送通知的代码:

try {
    OneSignal::sendNotificationToUser(
        $message,
        $player_id,
        $url = null,
        $data = null,
        $buttons = null,
        $schedule = null
    );
} catch (\Exception $e) {
    return response()->json([
        "error" => 'one_signal_error',
        "message" => $e->getMessage(),
        "file" => $e->getFile(),
        "line" => $e->getLine(),
    ], 422);
}

错误信息:

{
    "error": "one_signal_error",
    "message": "Client error: `POST https://onesignal.com/api/v1/notifications` resulted in a `403 Forbidden` response:\n{\"errors\": [\"Access denied.  Please include an 'Authorization: Basic ...' header with a valid API key (https:\/\/documenta (truncated...)\n",
    "file": "/home/arloponc/public_html/developer/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php",
    "line": 113
}

预期行为:

使用正确的 OneSignal API 密钥时,通知应成功发送。

实际行为:

请求会产生

403 Forbidden
响应,表明 API 密钥丢失或无效。我已经验证了 API 密钥并将其添加到环境变量中,但问题仍然存在。

重现步骤:

  1. 按照包装说明设置 OneSignal 集成。
  2. 使用
    sendNotificationToUser
    功能发送通知。
  3. 观察响应中的
    403 Forbidden
    错误。

环境:

  • Laravel 版本:16.48.10
  • PHP 版本:8.1
  • OneSignal 软件包版本:2.1(berkayk/onesignal-laravel)
  • Guzzle 版本:7.2(guzzlehttp/guzzle)

附加信息:

  • API 密钥在
    .env
    文件中设置,我确信它配置正确。
  • 授权标头似乎未正确包含在请求中。然而,这似乎是由包内部处理的,所以我不确定它为什么失败。

如有任何指导或建议,我们将不胜感激。

php laravel push-notification laravel-8 onesignal
1个回答
0
投票

请在您的请求标头中包含有效的 API 密钥。

© www.soinside.com 2019 - 2024. All rights reserved.