현재 Firebase와 PHP를 사용하여 작은 대화방을 만들고 있습니다. 이것은 Firebase의 훌륭한 학습 프로젝트가 될 것이라고 생각했으며, 지금까지는 매우 만족합니다!Firebase PHP CURL 인증
그러나 나는 벽에 부딪쳤다. PHP를 통해 인증 시스템을 Firebase에 구현하는 방법을 잘 모르겠습니다. 그것은 인증 시스템이 필요로하는 것에 대해 매우 구체적입니다.
채팅을 사용하려면 사용자는 내 사용자 정의 PHP 로그인 시스템을 사용하여 로그인해야합니다. 그런 다음 일단 로그인하면 채팅에서 읽고 쓸 수 있도록 인증됩니다.
저는 CURL을 사용하여 PHP로 어떻게 가능할 지 이해할 수 없었습니다.
이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
)
);
나는 사용자가 내 채팅 읽기/쓰기 및 비 인증 된 사용자가 읽을 수 없습니다 할 수 있도록 중포 기지로 인증 할 방법/쓰기 : 다음이 내 __construct
기능에
? 참고 : Firebase 보안 규칙을 수행하지 않았습니다. 이는 제 질문의 일부입니다.
설명서를 살펴본 결과 매우 두꺼울 수도 있지만 실제로 찾고있는 것을 찾을 수 없었습니다.
누구든지 올바른 방향으로 나를 가리 키길 바랍니다.
감사합니다.
편집 : 나는 내가 사용자의 메시지를 수행 할 작업을 수행 한 후 다음 중포 기지로 중계 내 PHP 스크립트에 아약스 통화에서 떨어져, 내 채팅 자바 스크립트를 사용하고 의도적으로하지 않았습니다.
는 편집 2 : 사용 된 라이브러리에 추가 링크 : "Firebase Token Generator"와 "Firebase PHP Client"
편집 3 : (reference)
__construct : 나의 현재 코드는 다음과 같습니다
$this->authtoken = JWT::encode(
array(
'admin' => true,
'debug' => true,
'v' => 0,
'iat' => time(),
'd' => array('user' => 'admin')
),
'<secret>',
'HS256'
);
새 M essage 기능 :
$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 secret을 인증으로 사용하려고 시도했지만 그 오류는 동일한 오류를 반환합니다.
규칙 :
{
"rules": {
".read": "auth.username == 'admin'",
".write": "auth.username == 'admin'"
}
}
감사합니다. Michael, 나는 방금 그걸 얻었습니다. - 어떻게 firebase를 할 수 있을까요 .auh (); PHP를 사용/컬? 나는 이것이 JS로 할 수 있다는 것을 알지만 PHP/Curl로 가능합니까? –
MrE
아니면 오해 했나요? JS를 통해 인증을 실행해야합니까? – MrE
firebase.js를 전혀 사용하지 않습니까? 당신이 채팅을 말했을 때, 나는 그것이 우리의 채팅 예제 (https://www.firebase.com/tutorial/#example/chat)와 같다고 생각했지만, 아마도 당신은 뭔가 다른 것을하고 있습니까? 대신 클라이언트에서 REST API를 사용하는 경우 (즉, Ajax GET/PUT을 수행하는 경우) 인증 토큰을 사용할 수 있지만 firebase.auth()를 호출하는 대신? auth =을 REST 요청에 추가하십시오. –