Curl 如何在通过RESTAPI向Firebase添加对象时设置我们自己的密钥
我使用以下方法将对象添加到Firebase数据库Curl 如何在通过RESTAPI向Firebase添加对象时设置我们自己的密钥,curl,firebase,firebase-realtime-database,Curl,Firebase,Firebase Realtime Database,我使用以下方法将对象添加到Firebase数据库 $url = "https://myfb.firebaseio.com/api/types/ty/packs.json"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT
$url = "https://myfb.firebaseio.com/api/types/ty/packs.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $userData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
$jsonResponse = curl_exec($ch);
if(curl_errno($ch))
{
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
$userData
将保存在数据库中唯一生成的节点下,如下所示
我想为该节点提供自定义密钥。我是怎么做到的 将url更改为所需的Id:
$url = "https://myfb.firebaseio.com/api/types/ty/packs/MY_CUSTOM_ID.json";
请参见Franke van Puffelen的类似回答:如果您使用Firebase REST API在Firebase中插入数据时使用的是自定义Id,而没有任何子(自动生成)Id,请使用“Put”而不是“Post”。Firebase文档告诉我们,“如果使用REST API,某些方法将被覆盖。”所以您必须使用头X-HTTP-Method-Override:PUT或addcustommethodforPHPCURL 比如,
function saveObject(){
$KEY ='YOUR_FIREBASE_SERVER_KEY';
$headers = array('Content-Type:application/json', 'Authorization:key='.$KEY);
//$object = new StdClass();
//$object->key = "value";
// or array....
$object = array('key' => 'value');
$data = json_encode($object);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://YOURFIREBASEURL/YOUR_ROOT.json");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // <--- This line important
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // <--- This line to
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
if(curl_errno($ch)){
return false;
}
curl_close($ch);
return $response;
}
函数saveObject(){
$KEY='YOUR_FIREBASE_SERVER_KEY';
$headers=array('Content-Type:application/json','Authorization:key='。$key);
//$object=新StdClass();
//$object->key=“value”;
//或数组。。。。
$object=array('key'=>value');
$data=json_encode($object);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,”https://YOURFIREBASEURL/YOUR_ROOT.json");
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,“PUT”);//但是在我的自定义ID中有另一个唯一生成的节点。我们不能阻止它吗?我需要将我的数据保存在自定义ID中。而不是我的自定义ID->唯一生成->我的数据。我不是你的用户,你的用户数据是什么样子的。文档解释了怎么做。你找到解决方案了吗?我遇到了同样的问题。你呢找到上述问题的解决方案吗?因为我也被困在这里。@ChandraShekharKaushik是的。创建嵌套JSON,包括自定义的唯一键作为键。