Флаттер: 400 Плохой запрос, когда я делаю запрос в gmail от googleapis - PullRequest
1 голос
/ 08 марта 2020

Я хочу получить ответ от Gmail googleapis, поэтому я использую package:googleapis/gmail/v1.dart и создаю код service.users.messages.list(_currentUser.email, q:'from:$searchingWord');, чтобы получить список сообщений, отфильтрованных по q:. Но есть запрос 400 Bad, поэтому после отладки я нашел этот URL https://www.googleapis.com/gmail/v1/users/(myEmail)/messages?q=from%3Anoreply%40github.com&alt=json. Это плохая просьба, поэтому это проблема с URL, но я не уверен, что не так. Мне нужна ваша помощь.

Код, где возникла проблема

  Future<gMail.GmailApi> getGMailApi() async {
    return gMail.GmailApi(await getGoogleClient());
  }

  Future<AuthClient> getGoogleClient() async {
    return await clientViaServiceAccount(await getCredentials(), [
      'email',
      'https://mail.google.com/',
      'https://www.googleapis.com/auth/gmail.modify',
      'https://www.googleapis.com/auth/gmail.readonly'
    ]);
  }

  Future<ServiceAccountCredentials> getCredentials() async {
    if (credentials == null) {
      credentials = ServiceAccountCredentials.fromJson(await rootBundle
          .loadString('android/app/todoapp-270005-c7e7aeec11f7.json'));
    }
    print(credentials);
    return credentials;
  }

  Future<void> handleGetMail(String searchingWord) async {
    gMail.GmailApi service = (await getGMailApi());

    gMail.ListMessagesResponse response =
    await service.users.messages.list(_currentUser.email, q:'from:$searchingWord');

    List<gMail.Message> messages;
    while (response.messages != null) {
      messages.addAll(response.messages);
      if (response.nextPageToken != null) {
        String pageToken = response.nextPageToken;
        response = await service.users.messages
            .list(_currentUser.email, q:'from:$searchingWord', pageToken: pageToken);
      } else {
        break;
      }
    }

    for (gMail.Message message in messages) {
      print(message.toString());
    }
  }
...