我正在从我的firebase数据库中读取一些Json文件,我正在尝试获取当前用户的ID令牌,以便在标题中使用,如下所示:
var response = await httpClient.get(url,headers: {'Authorization':"Bearer ${FirebaseAuth.instance.currentUser.getToken()}"});
当我执行上一行时,似乎它没有获得正确的令牌,因为我无法访问数据库,但是,当我在字符串中手动包含ID令牌时,我的应用程序按预期工作。我做错了到底是什么意思?
答案 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"});