FCM - 迁移到 HTTPv1 后如何订阅主题

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

我正在尝试从 FCM Legacy API 迁移到 FCM V1 API。我设法使用 FCM V1 API 完美地向设备令牌发送通知,但我不知道如何为用户订阅主题。

我为此使用 googleapis IID API

https://iid.googleapis.com/iid/v1/<DEVICE TOKEN HERE>/rel/topics/<TOPIC NAME HERE>

早期在 Legacy API 中,我们有服务器密钥,我用它来发送这样的标头

{Authorization: key=<SERVER KEY>}
,但在 HTTP V1 API 之后,我们不再有服务器密钥。

我尝试过的事情:

  1. 我尝试在授权中发送 API 令牌,例如
    {Authorization: Bearer <API TOKEN HERE>} 
    ,我使用它来向设备令牌发送推送通知,因为它是使用 google API PHP 客户端生成的。
  2. 我尝试像
    {Authorization: key=<API KEY HERE>}
    一样在授权中发送API密钥,但没有成功。

使用上述方式响应时收到 401 未经授权的错误。

如果我遗漏了什么或做错了什么,有人可以指导我吗?

我使用 PHP 作为后端。

php firebase firebase-cloud-messaging google-api-php-client
2个回答
0
投票

在标题中将

access_token_auth
设置为
true

例如。

发布 https://iid.googleapis.com/iid/v1/`DEVICE_TOKEN`/rel/topics/`TOPIC_NAME`

授权:不记名

API_TOKEN_HERE

access_token_auth:true


0
投票

FCM HTTP V1 主题订阅/取消订阅 通过 Curl/ PHP 你可以使用这个

function manageTopicSubscription($type, $deviceTokens, $topic, $accessToken) {
        if($type == "add")
            $url = "https://iid.googleapis.com/iid/v1:batchAdd";
        else // remove
            $url = "https://iid.googleapis.com/iid/v1:batchRemove";

        $headers = [
            'Authorization: Bearer ' . $accessToken,
            'Content-Type: application/json',
            'access_token_auth: true'
        ];
    
        $data = [
            'to' => "/topics/".$topic,
            'registration_tokens' => $deviceTokens // array, ["fsa...", "fffd..."]
        ];

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    
        $result = curl_exec($ch);
        curl_close($ch);
        return json_decode($result, true);
    }

通话功能 订阅

manageTopicSubscription("add", $deviceTokens, "topicName", $accessToken);

取消订阅

manageTopicSubscription("remove", $deviceTokens, "topicName", $accessToken);
© www.soinside.com 2019 - 2024. All rights reserved.