调用FCM V1接口发消息遇404(Requested entity was not found)错误求助
FCM V1接口404错误排查与解决
错误原因
- 请求URL缺失Project ID:你的请求URL中
projects/后为空(https://fcm.googleapis.com/v1/projects//messages:send),FCM无法定位到对应Firebase项目,直接返回404 NOT_FOUND。
解决方法
补充正确的Project ID到URL
从serviceAccountKey.json文件中提取project_id字段值,将其填入URL的projects/后,修正后的URL格式如下:$url = 'https://fcm.googleapis.com/v1/projects/你的ProjectID/messages:send';验证Project ID与服务账号匹配性
确保serviceAccountKey.json中的project_id和URL中填入的Project ID完全一致,避免因ID不匹配导致的项目定位失败。
修正后的代码片段
// 替换为你的Firebase项目ID $projectId = 'your-firebase-project-id'; $url = "https://fcm.googleapis.com/v1/projects/{$projectId}/messages:send"; $credentialsFilePath = public_path('assets/json/serviceAccountKey.json'); $client = new \Google_Client(); $client->setAuthConfig($credentialsFilePath); $client->addScope('https://www.googleapis.com/auth/firebase.messaging'); $token = $client->fetchAccessTokenWithAssertion(); $access_token = $token['access_token']; $data = [ 'message' => [ 'token' => 'c25j-m60SbKdHZD_uYXihm:APA91bEsuOXz4-xTK0eMJeX_5Wcu7gaD4ci8zZqWSSpKMmhfrrlzndSrGOU7WCmbH56aSMQCL3pTAEkD47UvvTBXOg12FPRMIPSPp2YOiV1ZJA4Gvp_o-yXLl24QNhUlQsuFVOg5cHCQ', 'notification' => [ 'title' => $options['title'], 'body' => $options['body'], ], 'data' => [ 'category' => $options['category'], 'isAction' => $options['isAction'], 'isSOSActive' => $options['isSOSActive'], ], ], ]; $encodedData = json_encode($data); $client = new Client(); $response = $client->request('POST', $url, [ 'headers' => [ 'Authorization' => 'Bearer '.$access_token, 'Content-Type' => 'application/json', ], 'body' => $encodedData, 'verify' => true, // 生产环境需启用SSL验证 ]);
内容的提问来源于stack exchange,提问作者anuruddha bandara
相关产品推荐
相关产品推荐

