【发布时间】:2015-07-29 06:24:53
【问题描述】:
我最近开始从 gmail API 中看到以下错误:
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Mail service not enabled",
"reason" : "failedPrecondition"
} ],
"message" : "Mail service not enabled"
}
我测试过的每个 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;
}
executeAndLog 在 Gmail.Users.Messages.List 对象上调用 .execute。
这个错误只影响我的极少数用户,错误信息提示是权限问题。我希望要求我的用户重新授权将解决该问题,但我担心当出现权限问题时我会收到此错误消息而不是更常见的 401。有人看到这个错误吗?
【问题讨论】:
-
转到 console.developers.google.com 并启用 gmail API。
-
这是相当新的;它应该对应于 Directory API 中帐户的 isMailboxSetup 标志:developers.google.com/admin-sdk/directory/v1/reference/…。如果为 false,则该帐户无法使用 Gmail API。