向 FCM API 发送请求时收到无效的 JSON 有效负载

     2023-04-19     93

关键词:

【中文标题】向 FCM API 发送请求时收到无效的 JSON 有效负载【英文标题】:Invalid JSON payload received when sending request to FCM API 【发布时间】:2020-03-30 04:37:27 【问题描述】:

我正在通过我的 PHP 应用程序向 FCM 发送请求,但它返回以下错误:

 
"code": 400,
"message": "Invalid JSON payload received. 
    Unknown name \"\"validateOnly\":true,\"message\":\"name\":\"testName\",\"token\":\"validToken\"\":
    Cannot bind query parameter. Field '\"validateOnly\":true,\"message\":\"name\":\"testName\",\"token\":\"validToken\"' 
    could not be found in request message.",
"status": "INVALID_ARGUMENT",
"details": [  "@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [ 
    "description": "Invalid JSON payload received. 
       Unknown name \"\"validateOnly\":true,\"message\":\"name\":\"testName\",\"token\":\"validToken\"\":
       Cannot bind query parameter.
       Field '\"validateOnly\":true,\"message\":\"name\":\"testName\",\"token\":\"validToken\"' could not be found in request message."
 ]  ]  

我的通知

$notification = [
    'validateOnly' => true,
    'message' => [
        'name' => $name,
        'token' => "validToken"
    ]
];

$notification = json_encode($notification)

作为 JSON:

 
   "validateOnly":true,
   "message": 
      "name":"testName",
      "token":"validToken"
   

我的 http 标头

$header = [
        'Accept' => 'application/json',
        'Content-Length' => strlen($notification),
        'Content-Type' => 'application/json',
];

$header = json_encode($header, JSON_UNESCAPED_SLASHES);

作为 JSON:

 
   "Accept":"application/json",
   "Content-Length":72,
   "Content-Type":"application/json"

我的 cURL 代码

$curl_session = curl_init();
try 
    curl_setopt($curl_session, CURLOPT_URL, $this->_apiUrl);
    //_api_Url = https://fcm.googleapis.com/v1/projects/projectName/messages:send?access_token=$access_token
    curl_setopt($curl_session, CURLOPT_POST, true);
    curl_setopt($curl_session, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_session, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl_session, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    curl_setopt($curl_session, CURLOPT_POSTFIELDS, $notification);
 catch (Exception $e) 
    print_r($e);

$result = curl_exec($curl_session);
curl_close($curl_session);

我猜是\"\"validateOnly\"... 中的前两个引号导致了这个问题。 那可能吗?如果是这样,你建议我如何解决它? 还有其他想法吗?据我所知,根据HTTP v1 docs,我的所有代码都是正确的

【问题讨论】:

【参考方案1】:

您的标题错误。这不是 php-curl 所期望的,因此您的请求内容类型将是默认的 application/x-www-form-urlencoded 而不是将其视为 json。它应该是这样的:

$header = [
    'Accept:application/json',
    'Content-Length:'.strlen($notification),
    'Content-Type:application/json',
];
curl_setopt($curl_session, CURLOPT_HTTPHEADER, $header);

并且不要对其进行 json 编码,只需将其传递给 curl。

您可以在此处找到此文档:https://www.php.net/manual/en/function.curl-setopt.php

要设置的 HTTP 标头字段数组,格式为 array('Content-type: text/plain', 'Content-length: 100')

【讨论】:

如何通过 JSON 向服务器发送 API 请求?不断收到 CORS 错误

】如何通过JSON向服务器发送API请求?不断收到CORS错误【英文标题】:HowtosendAPIrequeststoaserverviaJSON?KeepgettingCORSerrors【发布时间】:2018-10-1516:43:20【问题描述】:我正在使用ReactJs和Axios向我的服务器发送API请求,但我不断收到相同... 查看详情

C# Google API - 收到无效的 JSON 有效负载

...2020-12-0114:11:30【问题描述】:我即将向googlesAPI创建一个请求,目的是更改gmail帐户的签名。这是触发错误的请求部分。如果我将“签名”字符串更改为此“测试”,一切正常。我知道这一定与我似乎找不到问题的格式有关。string... 查看详情

Express CORS 有时有效,有时无效

...ssAPI和一个位于sub.main-domain.tld的管理面板,用于向我的API发送请求。当我尝试从我的管理面板向我的API发送请求时,我收到 查看详情

无法从服务器向 FCM url 发送请求(相同的代码在本地 pc 上工作)

】无法从服务器向FCMurl发送请求(相同的代码在本地pc上工作)【英文标题】:UnabletosentrequesttoFCMurlfromserver(samecodeisworkingfromlocalpc)【发布时间】:2017-03-2207:35:37【问题描述】:无法从服务器向FCMurl发送请求(相同的代码在本地电... 查看详情

通过 FCM 发送时未收到推送通知,但在 IOS 上通过 APN 发送时收到

】通过FCM发送时未收到推送通知,但在IOS上通过APN发送时收到【英文标题】:PushnotificationsnotreceivedwhensentoverFCMbutdowhensentoverAPNonIOS【发布时间】:2017-08-1415:17:16【问题描述】:我在通过FCM向IOS设备中的cordova应用程序发送推送通知... 查看详情

向 ROBLOX API 发送 https 请求时出错

】向ROBLOXAPI发送https请求时出错【英文标题】:ErrorwhensendinghttpsrequesttoROBLOXAPI【发布时间】:2021-07-3105:58:42【问题描述】:我正在向Roblox编写一个简单的API请求,以便检索X-CSRF-TOKEN来执行POST请求。我面临的问题是“错误:套接字... 查看详情

向 iOS 设备发送数据消息会导致 FirebaseMessagingException:请求包含无效参数

】向iOS设备发送数据消息会导致FirebaseMessagingException:请求包含无效参数【英文标题】:SendingdatamessagetoiOSdeviceresultsinFirebaseMessagingException:Requestcontainsaninvalidargument【发布时间】:2021-02-2307:58:20【问题描述】:当我们使用FirebaseAdmi... 查看详情

系统刚启动时未收到 FCM 通知

...到推送通知。我的情况是:关闭手机。向使用生成的令牌发送FCM推送通知FirebaseInstanceId.getInstance().getToken()打开手 查看详情

打开应用程序并锁定屏幕时未收到 Ionic FCM 推送通知,除非被点击

...在开发一个离子应用程序,我正在使用FCM推送通知向用户发送通知。这是已发送通知的JSON负载:"to":"access_tok 查看详情

下游提供无效数据时向客户端发送 Http 状态码

】下游提供无效数据时向客户端发送Http状态码【英文标题】:Httpstatuscodetoaclientwhendownstreamprovidesinvaliddata【发布时间】:2021-11-1018:04:23【问题描述】:有一种情况是,为了满足API消费者的请求,我们正在回调消费者以获取额外的... 查看详情

当应用收到通知时,IOS 向 HTTP 服务器发送请求

】当应用收到通知时,IOS向HTTP服务器发送请求【英文标题】:IOSsendrequesttoHTTPserverwhenappreceivednotification【发布时间】:2015-06-1613:13:39【问题描述】:我是IOS开发新手,我尝试使用推送通知据this文章:当用户的设备收到推送通知... 查看详情

使用 Python 向 mailchimp API 发送 POST 请求

】使用Python向mailchimpAPI发送POST请求【英文标题】:SendPOSTrequesttomailchimpAPIwithPython【发布时间】:2017-10-1617:08:51【问题描述】:我正在尝试向mailchimpapi发送POST请求以将新成员添加到列表中,但我不断收到错误消息,提示缺少api密... 查看详情

向 ASP.NET Web API 发送请求时出现 CORS 错误

】向ASP.NETWebAPI发送请求时出现CORS错误【英文标题】:CORSerrorwhensendingrequesttoASP.NETWebAPI【发布时间】:2019-09-0914:51:08【问题描述】:我正在尝试从Angular应用程序和ASP.NETWebAPI发送请求,它们都在localhost的两个不同端口上运行。当... 查看详情

发送到:无效的参数

】发送到:无效的参数【英文标题】:sendto:Invalidargument【发布时间】:2014-03-1420:25:07【问题描述】:我试图让一个程序(客户端)使用C中的套接字与另一个(服务器)通信,但我经常从服务器收到错误“无效参数”。在解释发... 查看详情

对 FCM 执行 POST 请求时服务器密钥无效?

】对FCM执行POST请求时服务器密钥无效?【英文标题】:Invalidserver-keywhenperformingaPOSTrequesttoFCM?【发布时间】:2020-01-2917:25:55【问题描述】:我正在关注thistutorial的推送通知,但我被困在它所说的部分要触发推送消息,请向该URL发... 查看详情

向我的 RESTful API(Python-Flask)发送 POST 请求,但收到 GET 请求

】向我的RESTfulAPI(Python-Flask)发送POST请求,但收到GET请求【英文标题】:SendingaPOSTrequesttomyRESTfulAPI(Python-Flask),butreceivingaGETrequest【发布时间】:2018-07-0522:30:24【问题描述】:我正在尝试以包含JSON的POST请求的形式向Zapierwebhook发... 查看详情

提供的注册令牌无效。确保它与客户端应用从 FCM 注册时收到的注册令牌匹配

】提供的注册令牌无效。确保它与客户端应用从FCM注册时收到的注册令牌匹配【英文标题】:Invalidregistrationtokenprovided.MakesureitmatchestheregistrationtokentheclientappreceivesfromregisteringwithFCM【发布时间】:2019-04-3023:06:17【问题描述】:我... 查看详情

无效的 JSON GET 请求 Express.js

】无效的JSONGET请求Express.js【英文标题】:InvalidJSONGETRequestExpress.js【发布时间】:2013-05-2814:12:38【问题描述】:在编写API时,我遇到了一个非常棘手的错误:当我尝试使用Content-Type标头application/json(大多数AJAX的默认设置)执行r... 查看详情