碎片 / 火授权
神话:Auth Firebase 扩展程序用于 CodeIgniter 4
资助包维护!
tattersoftware
paypal.me/tatter
Requires
- php: ^7.2
- myth/auth: dev-develop
Requires (Dev)
- codeigniter4/codeigniter4: dev-develop
- mockery/mockery: ^1.0
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-08-30 01:34:27 UTC
README
神话:Auth Firebase 扩展程序用于 CodeIgniter 4
快速开始
- 使用 Composer 安装:
> composer require tatter/fireauth
- 将凭据添加到您的环境配置文件 .env
- 设置神话:Auth 登录视图:
'login' => 'Tatter\Fireauth\Views\login'
描述
本模块扩展了 Myth:Auth,允许通过替换默认登录视图为针对您的 Firebase 应用配置的视图,从 Firebase Authentication 进行登录。
安装
通过 Composer 轻松安装,以利用 CodeIgniter 4 的自动加载功能,并始终保持最新状态
> composer require tatter/fireauth
或者,通过下载源文件并将其目录添加到 app/Config/Autoload.php
中来手动安装。
配置
可以通过扩展其配置文件来改变库的默认行为。将 examples/Fireauth.php 复制到 app/Config/ 中,并按照注释中的说明进行操作。如果在 app/Config 中找不到配置文件,库将使用其自身的。
凭据
登录视图使用您的 Firebase 应用的凭据连接到您的项目。您必须在项目根目录的 .env 文件中提供公共 API 密钥。将以下内容添加到文件底部
#--------------------------------------------------------------------
# FIREBASE
#--------------------------------------------------------------------
# firebase.apiKey = YOUR_API_KEY_HERE
在开始使用 UI 之前,您必须确保配置参数已加载且 Firebase 实例已初始化。例如,您的布局可能包括以下内容
<!-- Firebase JS SDK -->
<script src="https://www.gstatic.com/firebasejs/7.6.1/firebase-app.js"></script>
<!-- Firebase SDK config -->
<script src="<?= base_url('credentials/firebase.js') ?>"></script>
<script>
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
</script>
有关获取配置文件的更多信息,请参阅 Firebase 项目支持
使用
此库通过 Myth:Auth 的 LocalAuthenticator
类工作,显示登录并提供检查已登录用户访问权限的服务。由于 Firebase 处理实际的认证,您首先需要在那里配置您的项目,然后使用此模块的配置文件来匹配所需的行为。
Myth:Auth 定义了一个名为 "login" 的路由,该路由将显示 Firebase 表单。一旦 Firebase 完成认证,它将完成用户信息发送到回调,以验证账户并登录用户。
有关认证的更多信息,请参阅 Myth:Auth 的 认证文档。
示例登录
这是您从 Firebase 的 authResult
中期望的内容的示例,该内容由回调用于处理登录
{
"user": {
"uid": "fnBQhvsaYT5k5tXbZIGMPZiyFac1",
"displayName": "Joe User",
"photoURL": null,
"email": "joe@example.com",
"emailVerified": false,
"phoneNumber": null,
"isAnonymous": false,
"tenantId": null,
"providerData": [
{
"uid": "joe@example.com",
"displayName": "Joe User",
"photoURL": null,
"email": "joe@example.com",
"phoneNumber": null,
"providerId": "password"
}
],
"apiKey": "SyzCz2w8CGAIUyIlzaqHAiFC5WxIJ92T62G7wck",
"appName": "[DEFAULT]",
"authDomain": "yourproject.firebaseapp.com",
"stsTokenManager": {
"apiKey": "SyzCz2w8CGAIUyIlzaqHAiFC5WxIJ92T62G7wck",
"refreshToken": "L0uLRAEu4Isq-IbtDruFNntMKz--YAHU8E5hl9QMZ5BMAAw78rJq1WuqOiZF8e4TrwVA5KjeEJWLJMjEN5J6QDbQMHOjX3dANo_Ep0o1WYc43m3XjtJXOocuKAO91K_HyUZ74Knd_AimqeLm-yA-vEugjet2nQwFKzKwVTMPdalBbz_83ZrjQ8Uj8kuxkRMTz00yxMa6Yfw07hojUXiZ-3Xg2oUScjKNrmCSYp-ncLpc9ri7eGPNao8",
"accessToken": "eyJhbGzUyYjY0OTM0MjUzNGE2YjRhMDUxMjVkNzhmYmIiLCJ0eXAiOciOiJSUzI1NiIsImtpZCI6IjA0NjUxMTM5ZDg4NiJKV1QifQ.eyJuYW1lIjoiTWF0dGhldyBHYXRuZXIiLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZGVzdCIsImF1ZCI6I3QiLCJhdXRoX3RpbWUiOjES5jb20vbW9vbGF0aG9m1vb2xhdGhvbnRlcud1NzU0OTA5MzAiJmbmFZR01QWml5VDVrNXRYYlpJRmFjsInVzZXJfaWQiOQlFodnMxIiwic3ViIjoiZm5hWUdNUFppeVQ1azV0WGJaSUZhY0JRaHZzMSIsImlhdCI6MTU3NTQ5MDkzMCwiZXhwIjoxNTc1NDk0NTMwLCJlbWFpbCI6Im1nYXRuZXJAaWNsb3VkLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJtZ2F0bmVyQGljbG91ZC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJwYXNzd29yZCJ9fQ.HisMXtXhC6U2O3lSheF7mswOiosbdTMAIwiFXeELoy1Ak4CuFBwvkHmFKlnl9P8YRPjqFVaQ4ah2uYzhbo3L22ql9CQGz4GF4XRHGBijlYPS8EaF1HT8soYdyRv4SB5gW_OAzJy4fPnxsZVFur7AYFPturSPFWZAUA0CXP7rn0H4lxfI-Z90lTX9fBYpB9FFJo7zIOpppNINzCOtKB1w2K6kNsiMIwVxJCO52drS3xZkMwP-UAEReiG6iyv46J-T2j0Q0hmc9HrHzhHMM5JSdbTXPtcX81jD1mrmKdkF-AmlMIsCRrVlMfdEUBCzDTYV4EldpcDfI_g9kbakA8Em6g",
"expirationTime": 1575494530086
},
"redirectEventId": null,
"lastLoginAt": "1575490930053",
"createdAt": "1575409918661"
},
"credential": null,
"operationType": "signIn",
"additionalUserInfo": {
"providerId": "password",
"isNewUser": false
}
}
您可以通过定义一个事件(在 app/Config/Events.php 中)来处理 user
对象的附加处理,该事件接收 firebase_new_user
触发器
Events::on('firebase_new_user', function($user)
{
log_message('debug', 'New FireAuth user: ' . $user->email);
}