我尝试使用
从Google Calendar API检索事件import 'package:googleapis_auth/auth_io.dart';
import 'package:http/http.dart' as http;
import 'package:googleapis/calendar/v3.dart' as calendarapi;
...
class _MyHomePageState extends State<MyHomePage> {
final accountCredentials = new ServiceAccountCredentials.fromJson(
{
"private_key_id": "562ab...",
"private_key": "-----BEGIN PRIVATE KEY--............----END PRIVATE KEY-----\n",
"client_email": "xxx@xxx.iam.gserviceaccount.com",
"client_id": "1073.......",
"type": "service_account",
"project_id": "myapi"
}
);
final scopes = [calendarapi.CalendarApi.CalendarScope];
final client = new http.Client();
void getCalendarEvents() {
clientViaServiceAccount(accountCredentials, scopes).then((client) {
var calendar = new calendarapi.CalendarApi(client);
var calEvents = calendar.events.list("primary");
calEvents.then((calendarapi.Events events) {
events.items.forEach((calendarapi.Event event) {print(event.summary);});
});
client.close();
});
}
}
...
@override
void initState() {
super.initState();
getCalendarEvents();
}
clientViaServiceAccount行引发异常
FormatException(FormatException:输入意外结束)
凭据应该很好,因为我已经在其他客户端中使用了它们。在提琴手中,没有外向流量,因此即使在发送请求之前看起来也有错误。代码有什么问题?
编辑
这是错误的堆栈
══╡颤振测试框架引起的异常CA following以下 运行测试时引发了FormatException:输入意外结束
引发异常时,这是堆栈: #0 _ChunkedJsonParser.fail(dart:convert-patch / convert_patch.dart:1392:5) #1 _ChunkedJsonParser.close(dart:convert-patch / convert_patch.dart:510:7) #2 _JsonStringDecoderSink.close(dart:convert-patch / convert_patch.dart:1487:13) #3 _ConverterStreamEventSink.close(dart:convert / chunked_conversion.dart:80:18) #15 _StringAdapterSink.close(dart:convert / string_conversion.dart:249:11) #16 _Utf8ConversionSink.close(dart:convert / string_conversion.dart:300:20) #17 _ConverterStreamEventSink.close(dart:convert / chunked_conversion.dart:80:18) #46 AutomatedTestWidgetsFlutterBinding.pump。 (包:flutter_test / src / binding.dart:855:25) #49 TestAsyncUtils.guard(软件包:flutter_test / src / test_async_utils.dart:69:41) #50 AutomatedTestWidgetsFlutterBinding.pump(包:flutter_test / src / binding.dart:840:27) #51 WidgetTester.pumpWidget。 (软件包:flutter_test / src / widget_tester.dart:318:22) #54 TestAsyncUtils.guard(package:flutter_test / src / test_async_utils.dart:69:41) #55 WidgetTester.pumpWidget(软件包:flutter_test / src / widget_tester.dart:315:27) #56主要。 (文件:/// C:/projekte/flutter_garden/flutter_garden/test/widget_test.dart:9:18) #58主要。 (文件:/// C:/projekte/flutter_garden/flutter_garden/test/widget_test.dart:7:43) #59 testWidgets ..(package:flutter_test / src / widget_tester.dart:119:25) #61 testWidgets ..(package:flutter_test / src / widget_tester.dart:117:9) #62 TestWidgetsFlutterBinding._runTestBody(package:flutter_test / src / binding.dart:648:19) #76 AutomatedTestWidgetsFlutterBinding.runTest。 (包:flutter_test / src / binding.dart:1032:17) #78 AutomatedTestWidgetsFlutterBinding.runTest。 (package:flutter_test / src / binding.dart:1020:35)(从74个帧中删除了 _FakeAsync类,dart:async软件包,dart:async-patch软件包和 软件包stack_trace)
答案 0 :(得分:1)
通过仿真器而不是通过单元测试运行代码可以解决问题。