Flutter:我向googleapis的Gmail请求时出现400错误请求

时间:2020-03-08 15:42:46

标签: api flutter bad-request

我想从googleapis的Gmail中获得回复,因此我使用package:googleapis/gmail/v1.dart并编写代码service.users.messages.list(_currentUser.email, q:'from:$searchingWord');来获取由q:过滤的电子邮件列表。 但是有一个400错误的请求,因此,在调试之后,我找到了该URL https://www.googleapis.com/gmail/v1/users/(myEmail)/messages?q=from%3Anoreply%40github.com&alt=json。 这是一个错误的请求,所以这是一个网址问题,但是我不确定这是怎么回事。 我需要你的帮助。

出现问题的代码

  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());
    }
  }

0 个答案:

没有答案