我正在尝试使用Firebase ID令牌访问Firebase数据库。根据Firebase基础文档,“当用户或设备使用Firebase身份验证登录时,Firebase会创建一个唯一标识它们的相应ID令牌,并授予他们访问多个资源的权限,例如实时数据库。您可以重复使用用于对Realtime Database REST API进行身份验证并代表该用户发出请求的ID令牌。“
如何在用户使用电子邮件和密码登录后获取ID令牌?所以我可以把它传递给https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json?auth=<ID_TOKEN>
答案 0 :(得分:1)
您可以使用C
#await任务包装器而不是Java侦听器:
var tokenResult = await FirebaseAuth.GetInstance(fireApp).CurrentUser.GetTokenAsync(true);
Log.Debug(App.TAG, tokenResult.Token);
FirebaseAuth.GetInstance(fireApp)
.CurrentUser
.GetToken(true)
.AddOnCompleteListener(this, new GmsTaskCompletion((sender, e) =>
{
var task = (e as GmsTaskCompletion.GmsTaskEvent).task;
if (task.IsSuccessful)
{
var tokenResult = task.Result as GetTokenResult;
Log.Debug(App.TAG, tokenResult.Token);
}
}));
使用此IOnCompleteListener
实施:
public class GmsTaskCompletion : Java.Lang.Object, IOnCompleteListener
{
public class GmsTaskEvent : EventArgs
{
public readonly Android.Gms.Tasks.Task task;
public GmsTaskEvent(Android.Gms.Tasks.Task task) => this.task = task;
}
readonly EventHandler handler;
public GmsTaskCompletion(EventHandler handler) => this.handler = handler;
public void OnComplete(Android.Gms.Tasks.Task task)
{
if (handler != null)
handler.Invoke(this, new GmsTaskEvent(task));
}
}