这对我有用:
使用package登录,
google_sign_in然后从中获取auth标头:
import 'package:google_sign_in/google_sign_in.dart' show GoogleSignIn, GoogleSignInAccount;import 'package:googleapis/people/v1.dart' show ListConnectionsResponse, PeopleApi;useGoogleApi() async { final _googleSignIn = new GoogleSignIn( scopes: [ 'email', 'https://www.googleapis.com/auth/contacts.readonly', ], ); await _googleSignIn.signIn(); final authHeaders = _googleSignIn.currentUser.authHeaders; // custom IOClient from below final httpClient = GoogleHttpClient(authHeaders); data = await PeopleApi(httpClient).people.connections.list( 'people/me', personFields: 'names,addresses', pageToken: nextPageToken, pageSize: 100, );}这是一个自定义
IOClient实现,可自动将auth标头添加到每个请求。googleapis调用支持传递要使用的自定义HTTP客户端(而非默认值)(请参见上文)
import 'package:http/io_client.dart';import 'package:http/http.dart';class GoogleHttpClient extends IOClient { Map<String, String> _headers; GoogleHttpClient(this._headers) : super(); @override Future<StreamedResponse> send(baseRequest request) => super.send(request..headers.addAll(_headers)); @override Future<Response> head(Object url, {Map<String, String> headers}) => super.head(url, headers: headers..addAll(_headers));}


