如何将 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
包,出于安全考虑最终不应使用。 (在您构建的包中托管凭证文件)
我最好的建议是在您的服务器端创建一个用于日志记录的端点,您可以在其中使用您希望的任何日志记录库和任何身份验证方法。
我正在开发一个 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
包,出于安全考虑最终不应使用。 (在您构建的包中托管凭证文件)
我最好的建议是在您的服务器端创建一个用于日志记录的端点,您可以在其中使用您希望的任何日志记录库和任何身份验证方法。