php - 收到“未经授权的请求”。在 PHP 中使用 Firebase Authentication 提供的令牌
问题描述
我正在更新我的 firebase 实时数据库中的记录,因此我必须在更新之前对用户进行身份验证。获得令牌然后想要更新但它给了我“未经授权的访问”。错误。我已关注此链接中的文档。
这是我的数据库规则
{
"rules": {
".read": "true",
".write": "false"
}
}
这是我通过电子邮件和密码进行身份验证并获取令牌的方式
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]&email=[EMAIL]&password=[PASSWORD]&returnSecureToken=true',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Content-length: 0'
),
));
$response = curl_exec($curl);
curl_close($curl);
$aResponse = json_decode($response);
$sToken = $aResponse->idToken;
很好,现在我得到这个令牌并将它传递给另一个 curl 请求以更新我的 firebase 数据库中的记录,它给了我这个“未经授权的请求”错误。
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://[DB_URL].firebaseio.com/time.json?access_token=' . $sToken,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_POSTFIELDS =>'{
"digitalServices": "1552483790"
}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ' . $sToken,
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
请告诉我我在这里缺少什么。
解决方案
推荐阅读
- mysql - 实现 async/await node.js 和 mysql
- css - CSS/SCSS - 除了最后一个元素之外的所有元素(未按预期工作)
- docker - SimpleSAMLphp 作为 idp:找不到元数据
- powershell - 如何使用Powershell检查电子邮件是否已发送
- angular - 使用@ngrx/entity,如何更新项目数组
- bash - shell脚本中if语句的问题
- arrays - 如何修复:排序方法
- javascript - 如何检查子类是否已覆盖父方法/函数?
- ibm-midrange - 如何使用 qmhrcvpm api
- node.js - 我无法在 Loopback ORM 模型中设置唯一字段