Аутентификация на google api (календарь) с флаттером - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь получить события из API календаря Google, используя

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: неожиданный конец ввода)

Учетные данные должны быть в порядке, потому что я уже использую их в другом клиенте. В fiddler нет исходящего трафика c, поэтому похоже, что произошла ошибка еще до отправки запроса. Что не так в коде?

РЕДАКТИРОВАТЬ

Это стек ошибок

= =╡ ИСКЛЮЧЕНИЕ ЗАХВАТИЛО РАМКА ИСПЫТАНИЙ FLUTTER ╞════════════════════════════════════════════ ══════ При выполнении теста возникло следующее исключение 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 (пакет: flutter_test / src / test_async_utils.dart: 69: 41) # 55 WidgetTester.pumpWidget (пакет: flutter_test / srcart / widget_tester.dart : 315: 27) # 56 main. (файл: /// C: /projekte/flutter_garden/flutter_garden/test/widget_test.dart: 9: 18) # 58 main. (файл: /// 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 .. (пакет: flutter_test / src / widget_tester.dart: 117: 9) # 62 TestWidgetsFlutterBinding._runTestBody (пакет: flutter_test / src / binding.dart: 648: 19) # 76 AutomatedTestWidgetsFlutterBinding.runTest. (пакет: flutter_test / src / binding.dart: 1032: 17) # 78 AutomatedTestWidgetsFlutterBinding.runTest. (пакет: flutter_test / src / binding.dart: 1020: 35) (исключены 74 кадра из класса _FakeAsyn c, пакет dart: asyn c, пакет dart: asyn c -patch и пакет stack_trace)

1 Ответ

1 голос
/ 21 июня 2020

Запуск кода через эмулятор, а не из модульных тестов, устранил проблему.

...