firebase - Google Auth idtoken 返回连接到 Firebase 的 null
问题描述
我是新来的。我正在开发一个使用实时数据库后端的应用程序。我想要令牌,因为要与客户打交道,所以我使用 google Authentication with firebase。制作登录屏幕。它将id令牌返回为null。所以我无法获得id令牌。我会尝试很多方法,但都失败了
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
//import 'package:shared_preferences/shared_preferences.dart';
import 'package:cake/models/http_exception.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
class GoogleSignInProvider extends ChangeNotifier {
final googleSignIn = GoogleSignIn();
String? _idToken;
// String? _userId;
// String? get userid {
// return _userId;
// }
String? get idToken {
return _idToken;
}
GoogleSignInAccount? _user;
GoogleSignInAccount get user => _user!;
Future googleLogin() async {
final googleUser = await googleSignIn.signIn();
if (googleUser == null) return;
_user = googleUser;
final googleAuth = await googleUser.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken, idToken: googleAuth.idToken);
// final result = await googleSignIn.signIn();
// final ggAuth = await result!.authentication;
// print(ggAuth.idToken);
// print("srk is ass");
// print(ggAuth.accessToken);
googleSignIn.signIn().then((result) {
result!.authentication.then((googleKey) {
_idToken = googleKey.idToken;
print(googleKey.accessToken);
print(googleKey.idToken);
print(googleSignIn.currentUser!.displayName);
}).catchError((err) {
print('inner error');
});
}).catchError((err) {
print('error occured');
});
// print(_idToken);
// print('ckodk');
await FirebaseAuth.instance.signInWithCredential(credential);
notifyListeners();
}
Future logout() async {
await googleSignIn.disconnect();
FirebaseAuth.instance.signOut();
notifyListeners();
}
}
解决方案
推荐阅读
- tensorflow - CUDA_ERROR_OUT_OF_MEMORY 仅在评估阶段
- python-3.x - 如何以表格格式格式化 Python 有序字典
- javascript - 超链接在手机上无法点击,在桌面上可以正常工作
- asp.net-core - 如何在 AspNetCore 2.2 NLog 中关闭 Microsoft 日志
- c# - 为什么函数没有递归地返回所有的孩子?
- api - 向数据库发送数据时如何进行加载
- c++ - boost::iostreams::::copy 似乎太慢了
- javascript - 使用门户反应打开新标签
- node.js - 尽管单独的 echo 语句,脚本输出被缓冲到一条消息中?
- c# - 哪个 Unity 程序集包含项目文件夹类类型?