我想在我的 Flutter 应用程序中使用 Google Cloud Natural Language,我得到Google API 包这适用于颤动,而_Google API_AUTH依赖适用于 0.2.1. 我该如何实现它们?
这对我有用:
使用包google_sign_in登录,然后从中获取 auth 标头:
google_sign_in
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; final httpClient = new GoogleHttpClient(authHeaders); data = await new PeopleApi(httpClient).people.connections.list( 'people/me', personFields: 'names,addresses', pageToken: nextPageToken, pageSize: 100, ); }
这是一个自定义IOClient实现,可自动将 auth 标头添加到每个请求。 googleapis 调用支持传递要使用的自定义 HTTP 客户端而不是默认值(参见上文)
IOClient
import 'package:http/http.dart' show BaseRequest, IOClient, Response, StreamedResponse; 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)); }
我还无法添加评论,所以我只是将其作为评论发布。
我一直试图按照最佳答案制作 GoogleHttpClient,但在导入时,它说“库'package:http/http.dart'不会导出显示名称'IOClient'的成员。”
我在这里找到了答案https://pub.dartlang.org/packages/http#-changelog-tab-,它说你应该单独导入 IOClient:import 'package:http/io_client.dart';
import 'package:http/io_client.dart';
我认为这可能会帮助那些不知所措的人以及谷歌 API 的实施。
2 回答
这对我有用:
使用包
google_sign_in
登录,然后从中获取 auth 标头:这是一个自定义
IOClient
实现,可自动将 auth 标头添加到每个请求。 googleapis 调用支持传递要使用的自定义 HTTP 客户端而不是默认值(参见上文)我还无法添加评论,所以我只是将其作为评论发布。
我一直试图按照最佳答案制作 GoogleHttpClient,但在导入时,它说“库'package:http/http.dart'不会导出显示名称'IOClient'的成员。”
我在这里找到了答案https://pub.dartlang.org/packages/http#-changelog-tab-,它说你应该单独导入 IOClient:
import 'package:http/io_client.dart';
我认为这可能会帮助那些不知所措的人以及谷歌 API 的实施。