j42 / laravel-firebase
适用于 Laravel 的 Firebase 端口(4.2+)
Requires
- php: >=5.4.0
- firebase/php-jwt: @dev
- guzzlehttp/guzzle: 6.1.*
This package is not auto-updated.
Last update: 2024-09-24 01:30:57 UTC
README
适用于 Laravel 的 Firebase 端口(4.2+)
##配置
通过 composer 安装。如果您已将 minimum-stability
设置为 stable
,则应添加 @beta
或 @dev
以使用 php-jwt
库(由 Firebase 管理的依赖项,用于生成 JSON Web 令牌)。
将以下行添加到您的 composer.json
中,并运行 composer update
{
"require": {
"j42/laravel-firebase": "dev-master"
}
}
然后请将服务提供者和外观添加到 config/app.php
'J42\LaravelFirebase\LaravelFirebaseServiceProvider',
...
'Firebase' => 'J42\LaravelFirebase\LaravelFirebaseFacade'
访问令牌
最后,您应该在 config/database.php
数组中配置您的 Firebase 连接。您可以通过以下两种方式定义它
####简单访问令牌
'firebase' => array( 'host' => 'https://<you>.firebaseio.com/', 'token' => '<yoursecret>', 'timeout' => 10, 'sync' => false, // OPTIONAL: auto-sync all Eloquent models with Firebase? )
####高级:请求 JWT
这接受 Firebase 安全规则 允许的任何标准选项,并将生成一个 JSON Web 令牌以进行更细粒度的身份验证(受身份验证安全规则和过期时间限制)。
'firebase' => array( 'host' => 'https://servicerunner.firebaseio.com/', 'token' => [ 'secret' => '<yoursecret>', 'options' => [ 'auth' => [ 'email' => 'example@yoursite.com' ] ], 'data' => [] ], 'timeout' => 10, 'sync' => false, // OPTIONAL: auto-sync all Eloquent models with Firebase? )
FirebaseClient 实例作为单例加载到 IoC 容器中,其中包含用于与 Firebase 交互的 Guzzle 实例。
入门
进行简单的 GET 请求
// Returns: (Array) of data items Firebase::get('/my/path'); // Returns: (\Illuminate\Database\Eloquent\Collection) Eloquent collection of Eloquent models Firebase::get('/my/path', 'ValidEloquentModelClass'); // Returns: (\Illuminate\Database\Eloquent\Model) Single Eloquent model // Conditions: $SomeModelInstance must inherit from Eloquent at some point, and have a (id, _id, or $id) property Firebase::get($SomeModelInstance); // Returns: (Array) Firebase response Firebase::set('/my/path', $data); // Returns: (Array) Firebase response Firebase::push('/my/path', $data); // Returns: (Array) Firebase response Firebase::delete('/my/path');
模型同步
默认情况下,此包将保持您的 Eloquent 模型与 Firebase 同步。这意味着每当 eloquent.updated: *
触发时,模型将被推送到 Firebase。
此包将自动在模型上查找 'id'、'_id' 和 '$id' 变量,以便 Firebase 路径规范化如下
// Eloquent model: User // Firebase location: /users/{user::id} $User = new User(['name' => 'Julian']); $User->save(); // Pushed to firebase $Copy = Firebase::get('/users/'.$User->id, 'User'); // === copy of $User $Copy = Firebase::get($User); // === copy of $User
要禁用此功能,请确保在数据库连接配置数组中 'sync' => false
。
此功能与任何覆盖默认 Eloquent 模型的包兼容,前提是它配置了触发适当的 saved
和 updated
事件。目前,它已与基本 Illuminate...Model
以及 Jenssegers MongoDB Eloquent Model 进行了测试
####单独同步模型
如果您想添加白名单属性,以便在模型 更新 时自动将其推送到 Firebase,您可以通过向任何支持的模型添加白名单属性来实现。
此操作不受配置数组中的(自动)sync
属性的影响。如果找到 $firebase
白名单数组,则将在每个更新事件中发布包含的字段。
class User extends Eloquent { ... public $firebase = ['public_property','name','created']; // These properties are pushed to firebase every time the model is updated }
##高级使用
#####手动创建令牌
$FirebaseTokenGenerator = new J42\LaravelFirebase\FirebaseToken(FIREBASE_SECRET); $Firebase = App::make('firebase'); $token = $FirebaseTokenGenerator->create($data, $options); $Firebase->setToken($token);