如何将 Stackdriver 与 Flutter 结合使用

How to use Stackdriver with Flutter

我正在开发一个 flutter 应用程序。有什么方法可以直接从 Flutter/Dart 向 StackDriver 写入数据。

您可以使用:

https://pub.dev/packages/googleapis

示例:

import 'package:googleapis/logging/v2.dart';
import 'package:googleapis_auth/auth.dart';
import 'package:googleapis_auth/auth_io.dart';

final _credentials = new ServiceAccountCredentials.fromJson(r'''
{
... YOUR CREDENTIALS ....
}
''');

const _SCOPES = const ['https://www.googleapis.com/auth/logging.write'];

clientViaServiceAccount(_credentials, _SCOPES).then((httpClient) {
  var errorReporting = new LoggingApi(httpClient);

  // Resource
  var resource = new MonitoredResource();
  resource.type = 'global';
  resource.labels = {
    'project_id': 'PROJECT_ID',
  };

  // Prepare new log entry.
  LogEntry logEntry = new LogEntry();
  logEntry.logName = "projects/PROJECT_ID/logs/LOG_ID";
  logEntry.jsonPayload = {'message': 'YOUR MESSAGE'};
  logEntry.resource = resource;

  var request = new WriteLogEntriesRequest();
  request.entries = [logEntry];

  errorReporting.entries.write(request).then((_) {
    print('log entry sent');
  });
});

但是,请注意,您需要将您的凭据放在您的 flutter 应用程序上,"hackers" 可以窃取它。因此,最好将日志发送到后端,然后将其发送到 StackDriver。

为了将日志写入 Stackdriver,您必须通过 Google Cloud Platform 的身份验证。一般来说,您有 2 个身份验证选项:

1。用户名-密码

使用 google_sign_in 登录,这会创建一个客户端,您可以使用 googleapis 并稍后使用可用的不同 API。

2。服务帐号

读取生成的凭据 JSON 文件并使用 clientViaServiceAccount。不支持此方法,因为随 Flutter 提供的 Dart SDK 中缺少 dart:html 包,出于安全考虑最终不应使用。 (在您构建的包中托管凭证文件)

我最好的建议是在您的服务器端创建一个用于日志记录的端点,您可以在其中使用您希望的任何日志记录库和任何身份验证方法。