如何使用PHP从Firebase数据库获取数据?

时间:2017-04-10 21:05:08

标签: php firebase firebase-realtime-database firebase-authentication

最近,我创建了一个由两部分组成的Firebase项目,一个是iOS应用程序,另一个是网站。一切都很好,直到我发现我需要使用PHP将内容动态加载到页面而不仅仅是JavaScript。

在进一步研究中,我发现无法使用JavaScript从Firebase数据库中检索数据,然后在PHP脚本上使用此数据。

由于在Firebase文档上没有关于PHP的文档,我开始寻找答案,并在github上找到了一个名为Firebase Admin SDK for PHP的项目。所以在这里我经历了许多沮丧的尝试,使用PHP寻求帮助从Firebase检索数据。这是我做的:

  • 已安装的Composer:

    php -r" copy(' https://getcomposer.org/installer',' composer-setup.php');"
    php composer-setup.php
    php -r" unlink(' composer-setup.php');"

  • 将CD放入项目文件夹并运行:

    php composer.phar需要kreait / firebase-php

  • 在项目上创建一个新的index.php以进行测试

  • 添加到index.php的顶部:

    要求 DIR 。' / vendor/autoload.php' ;;

  • 在Fibase内部项目概述中,创建一个服务帐户并将FriendlyChat-1f226af19083.json保存到项目文件夹中。

  • 添加到index.php:

    $ firebase =(new \ Firebase \ Factory())
    - > withCredentials(的 DIR ' /FriendlyChat-1f226af19083.json')
    - > withDatabaseUri(' https://friendlychat-82d4c.firebaseio.com/')
    - >创建();

    $ database = $ firebase-> getDatabase();
    $ reference = $ database-> getReference(' / k1');
    $ snapshot = $ reference-> getSnapshot();
    $ k1 = $ snapshot-> getValue();
    echo $ k1。'';

这是项目数据库: enter image description here

我希望看到" teste"打印在页面中。但页面只是呈现空白,任何人都可以帮我解决这个问题吗?我不知道下一步该去哪里,只要我能够从数据库中获取和设置数据,我就可以开始在php中开发新网站了。

2 个答案:

答案 0 :(得分:0)

$acc = ServiceAccount::fromJsonFile(__DIR__.'/key/xxxxxx.json');
            $firebase = (new Factory)->withServiceAccount($acc)->create();
            $this->database = $firebase->getDatabase();
$reference = $database->getReference('/K1');
$snapshot = $reference->getSnapshot()->getValue();
  

与Firebase DB连接的正确方法

答案 1 :(得分:0)

<?php 
require __DIR__.'/../vendor/autoload.php';
use Kreait\Firebase\Factory;
$factory = (new Factory)
        ->withServiceAccount('secret/serviceaccount.json')
        ->withDatabaseUri('link_to_your_firebase_database');


$database = $factory->createDatabase();
$reference = $database->getReference('Services/');

$snapshot = $reference->getSnapshot();
$value = $snapshot->getValue();