現在、Firebase と PHP を使用して小さなチャットを作成しています。これは、Firebase の良い学習プロジェクトになると思いました。今のところ、とても満足しています。
しかし、私は壁にぶち当たりました。PHP 経由で Firebase に認証システムを実装する方法がわかりません。認証システムに必要なことは非常に具体的です。
チャットを使用できるようにするには、ユーザーはカスタム php ログイン システムを使用してログインする必要があります。ログインすると、チャットで読み書きできるように認証されます。
CURLを使用して、PHPでこれが(たとえあったとしても)どのように可能になるのか、私は本当に理解できませんでした。
私の__construct
機能には次のものがあります。
require('/libs/FirebaseLib.php');
$this->firebase = new fireBase('https://<url>.firebaseio.com');
require('/libs/JWT.php');
require('/libs/FirebaseToken.php');
$tokenGen = new Services_FirebaseTokenGenerator('<firebase-secret>');
$this->authtoken = $tokenGen->createToken(
array(
'id' => $this->userid
)
);
Firebase で認証して、ユーザーがチャットで読み書きできるようにし、認証されていないユーザーが読み書きできないようにするにはどうすればよいですか? 注: Firebase のセキュリティ ルールには何もしていません。これは私の質問の一部です。
私はドキュメントを見てきましたが、私は非常に厚いかもしれませんが、探していたものを実際に見つけることができませんでした.
誰かが私を正しい方向に向けてくれることを願っています。
ありがとう!
編集:ユーザーのメッセージでやりたいことを実行した後、phpスクリプトへのajax呼び出しを除いて、意図的にチャットにjavascriptを使用していません。
編集 2:使用されているライブラリへのリンクを追加しました:「Firebase Token Generator」および「Firebase PHP Client」
編集 3:私の現在のコードは次のようになります: (参照)
__構造:
$this->authtoken = JWT::encode(
array(
'admin' => true,
'debug' => true,
'v' => 0,
'iat' => time(),
'd' => array('user' => 'admin')
),
'<secret>',
'HS256'
);
新しいメッセージ機能:
$response = $this->firebase->set('/chat.json?auth=' . $this->authtoken, array(
'message' => array(
'username' => 'Test',
'time' => time(),
'string' => 'Hello World!'
)
));
ただし、次のように返されます{ "error" : "invalid_token: Could not parse auth token." }
。基本的には管理者権限を取得したい。Firebase シークレットを認証として使用しようとしましたが、同じエラーが返されます。
ルール:
{
"rules": {
".read": "auth.username == 'admin'",
".write": "auth.username == 'admin'"
}
}