我正在使用Firebase 3.0 REST API,目前仅使用Google登录作为身份验证方式。从Android设备登录后,我尝试使用从下面的代码片段获取的idToken
调用rest API,但获得权限被拒绝响应:
FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getToken(true)
.addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
idToken = task.getResult().getToken();
}
}
});
有没有办法从客户端自身生成id令牌,可以用作访问令牌来验证REST API调用?
答案 0 :(得分:1)
创建Firebase身份验证令牌需要访问Firebase密钥,因此本质上是服务器端任务。
Firebase身份验证不会公开REST API以将OAuth令牌转换为Firebase令牌。
答案 1 :(得分:1)
如果您要执行的操作是使用用户凭据验证对实时数据库的访问,则必须执行以下步骤:
从已登录的用户获取Firebase身份验证ID令牌(上面的代码完全正确,只是复制到此处以供参考)。
FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getToken(true)
.addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
idToken = task.getResult().getToken();
}
}
});
向其中一个DB REST端点发出HTTP请求,并将此标记作为URL参数传递给“auth”参数。详细了解here。
值得关注的一些常见错误: