Firebase数据库未连接到PHP

时间:2018-02-22 14:48:40

标签: php firebase firebase-realtime-database arduino

我正在开发一个项目,我正在推动实时gps lat从Arduino到firebase。但是Firebase不允许http请求,所以我在两者之间使用php网站从arduino-sim900a模块获取数据到php网站,firebase代码运行正常,但firebase数据库没有更新

<?php
require 'firebaseLib.php';
$deviceId = $_GET["deviceid"];
$latitude = $_GET["lat"];
$longitude= $_GET["lon"];
echo($deviceId);
echo($latitude);
echo($longitude);



const DEFAULT_URL = 'my_url';
const DEFAULT_TOKEN = 'my_token';
$DEFAULT_PATH = '/Accounts/Devices/'.$deviceId;

date_default_timezone_set('Asia/Kolkata');

$_devicestatus= array(
'latitude' => $latitude + 0.0,
'longitude' => $longitude + 0.0,
'battery' => '100'
);


$firebase = new \Firebase\FirebaseLib(DEFAULT_URL,  DEFAULT_TOKEN);
echo('p');


$firebase->set($DEFAULT_PATH, $_devicestatus); 
echo('7');
$firebase->update($DEFAULT_PATH, $_devicestatus); 
echo('3');
// updates data in Firebase

echo('POST SUCCESSFUL');
?>

1 个答案:

答案 0 :(得分:0)

您的代码段表明您使用https://github.com/ktamas77/firebase-php作为库来访问Firebase实时数据库。

您没有收到错误并不意味着请求成功,您可以在source code中看到异常被捕获并且返回值设置为null以防例外。

您还应该知道Firebase已经弃用了使用数据库机密(在您的情况下为DEFAULT_TOKEN)的身份验证请求,并且为Google停止支持数据库机密的那一天做好准备,您应该迁移到服务基于帐户的身份验证,而不是以后。

https://github.com/kreait/firebase-php是一个提供基于服务帐户的身份验证的库,您的代码如下所示:

<?php

require __DIR__.'/vendor/autoload.php';

use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;

$serviceAccount = ServiceAccount::fromJsonFile('/path/to/google-service-account.json');

$firebase = (new Factory)
    ->withServiceAccount($serviceAccount)
    ->create();

$db = $firebase->getDatabase();

$reference = $db->getReference($DEFAULT_PATH);

$reference->set($devicestatus);
print_r($reference->getValue());

免责声明:我是该图书馆的创建者:)