FCM 仅使用 PHP 的 Google 客户端 API 为 iOS 设备返回 401 未授权错误



我正在使用FCM HTTP v1 API向移动设备发送通知。后端是使用 PHP 编写的,我正在使用 Google API 客户端库并使用服务帐户来授权我对 FCM 的请求。但是我遇到了一些奇怪的问题,例如通知被发送到所有Android设备,但是fcm为iOS设备返回401未经授权的错误。另外,我已经使用自己的iOS设备进行了测试,但是当我使用自己的iOS设备时,fcm总是返回200 OK。我很困惑问题出在我的代码还是移动设备上的某些配置上。以下是我发送通知的方式。

$client = new Google_Client();
$client->useApplicationDefaultCredentials(); 
$client->addScope('https://www.googleapis.com/auth/firebase.messaging');
$httpClient = $client->authorize();
$message = [
    "message" => 
    [
        "token" => $device_token,
        "notification" => 
        [
            "body" => $body,
            "title" => "xxxxx"
        ],
        "apns" => 
        [
            "payload" =>
            [
                "aps" => 
                [
                  "category" =>  "NEW_MESSAGE_CATEGORY",
                  "alert" =>  [
                     "body" =>  $body
                  ],
                  "badge" =>  3,
                  "sound" =>  "default",
                  "chat" => 2
                ]
            ]  
        ]
    ]
];
$response = $httpClient->post("https://fcm.googleapis.com/v1/projects/xxxx-123/messages:send", ['json' => $message]);

我在授权方面做错了什么?请帮忙。服务帐户文件已添加到 env 变量GOOGLE_APPLICATION_CREDENTIALS。

FCM 使用 APNS(Apple Push Notification Service(将消息传递到 iOS 设备,为此,FCM 需要连接到 Apple 服务器。
因此,我们需要在 Firebase 控制台中配置 APNS 凭据。如果此配置中存在任何错误,FCM 将无法连接到 Apple 服务器,并返回 401 错误。

因此,请检查设置->项目配置->云消息传递->iOS配置->APNS身份验证密钥中的所有配置特别是,检查">密钥代码"是否正确。

有关此配置的详细信息,请访问:

https://firebase.google.com/docs/cloud-messaging/ios/client#upload_your_apns_authentication_key

https://firebase.google.com/docs/cloud-messaging/ios/certs

问候

相关内容

  • 没有找到相关文章

最新更新