首页 > 解决方案 > `400 Bad Request` Firebase 通知

问题描述

我得到下一个错误:

Kreait\Firebase\Exception\Messaging\InvalidMessage 客户端错误:POST https://fcm.googleapis.com/v1/projects/wesig-c9298/messages:send导致400 Bad Request响应:{“错误”:{“代码”:400,“消息”:“请求包含无效参数。”,“状态”:“INVALID_ARGUMENT”(被截断了……)

这是我的代码:

$serviceAccount = Firebase\ServiceAccount::fromJsonFile(__DIR__."/apikey.json");
        $firebase = (new Firebase\Factory())
            ->withServiceAccount($serviceAccount)
            ->create();
        $messaging = $firebase->getMessaging();
        try {
            $generator = new TokenGenerator('AAAALLHVwdc:APA91bFOI1eaWOQTlLq7oezE8E5yWqIb584xDSA10ylTYuIS4Ys9A0qQaqiBSp7A0jRT9_tsaCrNP59Wm-pzD_9wCO4uuxnwD1dmyc5_dF4i9iNHi1TLOxrwmvc-WMPG6K5YFYs5knvla2M_oV7WOKRToawWRNch3g');
            $token = $generator
                ->setData(array('uid' => $user->attributes['uid']))
                ->create();
        } catch (TokenException $e) {
            echo "Error: ".$e->getMessage();
        }
        $notification = [
            'title' => "Titulo",
            'body' => "Cuerpo"
        ];
        $data = [
            'user' => 'yay',
            'fecha' => date('d-m-Y')
            ];
        $message = Firebase\Messaging\MessageToRegistrationToken::fromArray([
            'token' => $token,
            'notification' => $notification, // optional
            'data' => $data, // optional
        ]);
        $messaging->send($message);

我认为错误在令牌内,但我找不到修复它的方法。

标签: firebaseyii2firebase-cloud-messagingyii2-advanced-app

解决方案


文档中,它看起来像是TokenGenerator产生了一个身份验证令牌。这不是你想要的。消息中的token是通过调用客户端 SDK 获得的设备注册令牌。例如,在 Android 上,它是FirebaseInstanceId.getInstance().getInstanceId()


推荐阅读