嗨,我按照使用 FirebaseUI 将用户身份验证流程添加到 Flutter 桌面应用程序的教程进行操作,之后我想使用 google api。
Future<void> _createFile() async{
var httpClient = ???? ;
final driveApi = drive.DriveApi(httpClient);
final folder = drive.File()
..name = 'My New Folder'
..mimeType = 'application/vnd.google-apps.folder';
final folderInfo = await driveApi.files.create(folder);
final list = await driveApi.files.list();
for (var file in list.files!) {
print('${file.name})');
}
if(list.files!.isEmpty){
debugPrint("aucun fichier dans le drive");
}
}
I don't know how to get the httpClient.
在我使用的Android上
GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'email',
'https://www.googleapis.com/auth/drive',
],
);
与
var httpClient = (await _googleSignIn.authenticatedClient())!;
但它在 Windows 上不起作用
希望这对兄弟有帮助,
首先,确保将 googleapis 和 googleapis_auth 包添加到 pubspec.yaml 中。
dependencies:
googleapis: ^1.0.0
googleapis_auth: ^1.0.0
# ... other dependencies ...
然后您需要在 Google Cloud Console 中设置 OAuth 2.0 凭据:
转到 Google Cloud Console。 创建一个新项目或选择现有项目。 导航到“API 和服务”>“凭据”部分。 单击“创建凭据”并选择“OAuth 客户端 ID”。 选择“桌面应用程序”作为应用程序类型。 保存客户端 ID 和客户端密钥。
实现身份验证:使用googleapis_auth包进行身份验证。
import 'package:googleapis_auth/auth_io.dart';
import 'package:googleapis/drive/v3.dart' as drive;
import 'dart:io' show Platform;
final identifier = ClientId("Your_Client_ID", "Your_Client_Secret");
final scopes = [drive.DriveApi.driveScope];
void prompt(String url) {
print("Please go to the following URL and grant access:");
print(" => $url");
print("");
}
Future<AuthClient> getHttpClient() async {
var client = await clientViaUserConsent(identifier, scopes, prompt);
return client;
}
创建 Google Drive API 实例:
Future<void> _createFile() async {
try {
var httpClient = await getHttpClient();
final driveApi = drive.DriveApi(httpClient);
final folder = drive.File()
..name = 'My New Folder'
..mimeType = 'application/vnd.google-apps.folder';
final folderInfo = await driveApi.files.create(folder);
final list = await driveApi.files.list();
for (var file in list.files!) {
print('${file.name})');
}
if (list.files!.isEmpty) {
debugPrint("No files in drive");
}
} catch (e) {
print('Error creating file: $e');
}
}
当您运行应用程序并调用 _createFile() 时,它将提示您输入 URL 以通过网络浏览器进行身份验证。一旦通过身份验证,它将继续进行 API 调用。