Gmail API返回状态码400,错误"邮件服务未启用"

Luc*_*oan 5 gmail gmail-api

我最近开始看到gmail API出现以下错误:

{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Mail service not enabled",
    "reason" : "failedPrecondition"
  } ],
  "message" : "Mail service not enabled"
}
Run Code Online (Sandbox Code Playgroud)

我测试的每个gmail api调用都会导致错误,但以下代码显示了一个正常的示例:

public static List<String> getThreadIdsFromRFC822MessageIds(Collection<String> messageIds, User u) throws IOException, NoOauthCredentialsException {
    List<String> queryTerms = new ArrayList<>();
    for (String messageId: messageIds) {
        queryTerms.add("rfc822msgid:" + messageId);
    }
    String queryString = Joiner.on(" OR ").join(queryTerms);
    String fieldSelectionString = "messages/threadId";

    ListMessagesResponse messages = executeMessageQuery(u, queryString, fieldSelectionString);
    List<String> threadIds = new ArrayList<>();
    if (messages.getMessages() != null) {
        for (Message m : messages.getMessages()) {
            threadIds.add(m.getThreadId());
        }
    }
    return threadIds;
}

private static ListMessagesResponse executeMessageQuery(User u, String queryString, String fieldSelectionString) throws IOException, NoOauthCredentialsException {
    assert fieldSelectionString.length() > 0;
    Gmail g = GmailAPIHelper.getGmailService(u);
    Gmail.Users.Messages.List query = g.users().messages().list("me").setQ(queryString).setFields(fieldSelectionString);
    ListMessagesResponse messages = executeAndLog(query, u);
    return messages;
}
Run Code Online (Sandbox Code Playgroud)

其中executeAndLog在Gmail.Users.Messages.List对象上调用.execute.

此错误仅影响我的极少数用户,并且错误消息表明它是权限问题.我希望让我的用户重新授权可以解决这个问题,但我担心的是,当出现权限问题时,我收到此错误信息而不是更常见的401.有没有人见过这个错误?

小智 2

您的试用期可能已过期。请访问 admin.google.com 检查您的状态