接受的答案很可能是针对旧版本的 SDK 编写的,我只是无法让它工作。到目前为止,这对我有用。
例如,以下允许我们访问属于googleapis 一部分的Google Drive 中的文件。
依赖关系
pubspec.yaml:
dependencies:
google_sign_in: any
googleapis: any
(我只是在这里以any 为例,但您应该为您的实际应用指定版本。)
工作原理
必要的进口:
import 'package:googleapis/drive/v3.dart' as drive;
import 'package:google_sign_in/google_sign_in.dart' as signIn;
第1步,登录用户并请求访问谷歌驱动器的权限(范围):
final googleSignIn = signIn.GoogleSignIn.standard(scopes: [drive.DriveApi.DriveScope]);
final sign.GoogleSignInAccount account = await googleSignIn.signIn();
第 2 步,构建一个AuthenticateClient:
class AuthenticateClient extends http.BaseClient {
final Map<String, String> headers;
final http.Client client;
AuthenticateClient(this.headers, this.client);
Future<http.StreamedResponse> send(http.BaseRequest request) {
return client.send(request..headers.addAll(headers));
}
}
正如http 中所建议的,这是使用带有额外身份验证标头的BaseClient(可组合)。
第 3 步,使用第 1 步和第 2 步创建经过身份验证的 http 客户端并访问 google drive API。
final baseClient = new Client();
final authenticateClient = AuthenticateClient(authHeader, baseClient);
final driveApi = drive.DriveApi(authenticateClient);
结帐How to Use the Google Drive API With Flutter Apps了解详情。