如何从FirebaseAuth获取ID令牌

时间:2017-08-08 08:35:45

标签: firebase dart firebase-authentication flutter

我正在从我的firebase数据库中读取一些Json文件,我正在尝试获取当前用户的ID令牌,以便在标题中使用,如下所示:

 var response = await httpClient.get(url,headers: {'Authorization':"Bearer ${FirebaseAuth.instance.currentUser.getToken()}"});

当我执行上一行时,似乎它没有获得正确的令牌,因为我无法访问数据库,但是,当我在字符串中手动包含ID令牌时,我的应用程序按预期工作。我做错了到底是什么意思?

4 个答案:

答案 0 :(得分:9)

getIdToken()返回Future - 您必须await才能真正获得令牌字符串:

var token = await FirebaseAuth.instance.currentUser.getIdToken();
var response = await httpClient.get(url,headers: {'Authorization':"Bearer $token"});

答案 1 :(得分:0)

U还可以像这样从窗口对象检索id令牌:

const idToken = window.gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token

答案 2 :(得分:0)

我认为Flutter中存在错误。

现在要调用方法getIdToken(),您需要执行以下操作:

FirebaseUser user = await FirebaseAuth.instance.currentUser();

String token;

user.getIdToken().then((result) {

    token = result.token;
});

您无法致电FirebaseAuth.instance.currentUser().getIdToken()

答案 3 :(得分:0)

如果您正在使用

import auth from '@react-native-firebase/auth';

然后您可以使用

访问令牌
var token = await response.user.getIdToken();
console.log('TokenID', token);

然后,您可以将其用于

var response = await httpClient.get(url,headers: {'Authorization':"Bearer $token"});