【发布时间】:2019-08-15 01:08:32
【问题描述】:
我正在使用 Firebase Auth Rest API。我有用 PHP 编写的代码,用于将用户添加到数据库和 firebase 身份验证。我存储的信息有kind、idToken、email、refreshToken、expiresIn、localId。一切都很好!
现在,当我尝试从数据库中删除用户时,它可以正常工作,但不会从 firebase 身份验证中删除用户。请在下面找到注册和删除用户的代码。
我得到的错误是 CREDENTIALS_TOO_OLD_LOGIN_AGAIN(或) INVALID_ID_TOKEN。
FIREBASE_KEY 是我的 firebase 密钥,在 $data 中我传递了用户 idToken
/*
* User Sign Up
*/
function user_signup($data){
$response = true;
$data = json_encode($data);
$url = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=".FIREBASE_KEY;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$jsonResponse = curl_exec($ch);
if(curl_errno($ch))
{
$response = false;
}
curl_close($ch);
return $jsonResponse;
}
/*
* User Delete
*/
/* function user_delete($data){
$response = true;
$data = json_encode($data);
$url = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/deleteAccount?key=".FIREBASE_KEY;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$jsonResponse = curl_exec($ch);
if(curl_errno($ch))
{
$response = false;
}
curl_close($ch);
return $jsonResponse;
} */
【问题讨论】:
-
要能够删除用户的帐户,用户必须最近通过身份验证。错误消息似乎表明情况并非如此。在这种情况下,解决方案是重新验证用户身份,然后尝试再次删除他们的帐户。
-
感谢您的评论。我使用了securetoken.googleapis.com/v1/token?key='.FIREBASE_KEY 并发布了grant_type=refresh_token&refresh_token='.$user_refreshToken。我得到的结果是{“access_token”:“eyJhbGc..”,“expires_in”:“3600”,“token_type”:“Bearer”,“refresh_token”:“AEu4IL1..”,“id_token”:“eyJhbGciOiJS.. ", "user_id": "u2Jvb4844HN2..", "project_id": "4133...." } 然后我使用了googleapis.com/identitytoolkit/v3/relyingparty/… 并在帖子字段中发布了 id_Token,我得到了
-
我得到的结果是 { "error": { "code": 400, "message": "INVALID_ID_TOKEN", "errors": [ { "message": "INVALID_ID_TOKEN", "domain ": "全局", "原因": "无效" } ] } }
-
@FrankvanPuffelen 您能否指导我如何重新验证用户身份? TYIA。
-
对不起,我不知道如何从 PHP 中做到这一点。不过,我建议您更新您的问题,因为很明显需要重新验证。
标签: php firebase-realtime-database firebase-authentication