从Google Calendar API调用限制中获取4XX错误

时间:2016-05-11 11:09:31

标签: google-calendar-api

我正在使用谷歌日历api与python。 我创建了一个服务帐户,并使用私钥从我的服务器连接到日历api。

一切都很好。

昨天我开始收到错误:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
 }
}

当我登录控制台时,我的限制是:

太平洋时间午夜(PT)重设每日配额。

查询

请求/每天114,000,000 requests / 100seconds / user 500

控制台正确地向我显示我遇到4XX错误,每次点击都会增加错误次数,但我不知道如何解决这个问题

有没有人知道我可以从哪里开始寻找?

在我的代码下面,我用来连接

with open(os.path.dirname(os.path.abspath(__file__)) + "/KeyName.p12") as f:
        private_key = f.read()

        credentials = SignedJwtAssertionCredentials(client_email, private_key,
                scope=['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly'])

        http = Http()
        credentials.authorize(http)
        service = build(serviceName='calendar', version='v3', http=http)

        today_beginning = datetime.combine(date.today(), time())
        today_end = today_beginning + timedelta(1, 0) - timedelta(0, 1)

        now = datetime.now().isoformat()
        timeMin = today_beginning.isoformat() + 'Z'
        timeMax = today_end.isoformat() + 'Z'

        # events
        events = service.events().list(calendarId=calendar_id, timeMin=timeMin, timeMax=timeMax).execute() 

在这个阶段,它打破了

引发HttpError(resp,content,uri = self.uri) googleapiclient.errors.HttpError:https://www.googleapis.com/calendar/v3/calendars/.../hidden/parts/ ..返回“未找到”>

下面是显示过去30天内我的请求的图片,您将看到200下降和4xx开始的位置

Google API requests graph

更新 我做了一些改变但成效有限

我将代码更改为以下

scopes = ['https://www.googleapis.com/auth/calendar.readonly']
# p12 keyfile
# keyfile = os.path.dirname(os.path.abspath(__file__)) + "/" + p12_key
# credentials = ServiceAccountCredentials.from_p12_keyfile(client_email, keyfile, 'notasecret', scopes)

# json keyfile
keyfile = os.path.dirname(os.path.abspath(__file__)) + "/" + json_key
credentials = ServiceAccountCredentials.from_json_keyfile_name(keyfile, scopes)

http_auth = credentials.authorize(Http())
service = build(serviceName='calendar', version='v3', http=http_auth)

today_beginning = datetime.combine(date.today(), time())
today_end = today_beginning + timedelta(1, 0) - timedelta(0, 1)

now = datetime.now().isoformat()
timeMin = today_beginning.isoformat() + 'Z'
timeMax = today_end.isoformat() + 'Z'

# events
events = service.events().list(calendarId=calendar_id, timeMin=timeMin, timeMax=timeMax).execute()

此代码反映了文档中的最新更改

我尝试使用json& amp;一个p12证书

错误仍然存​​在。 我创建了另一个服务帐户,使用新凭据json + p12,错误仍然存​​在。 我创建了新的日历,错误仍然存​​在。

然后,我在另一个Google帐户上创建了一个服务帐户,重新创建了日历,并为此服务帐户创建了新凭据。 这使它再次发挥作用。

这让我觉得帐户有什么问题?

发生错误的帐户是针对企业帐户的Google应用付费的。我将使用该帐户记录一张票并报告回来

2 个答案:

答案 0 :(得分:0)

您可以在此documentation中看到与您遇到的错误相同的错误。建议的操作针对此page

Google Calendar API的礼节限制为每天1,000,000次查询。

如果您已为项目启用了结算功能,则可以查看每个API的配额百分比。您可以从API部分的 API库启用的API 链接查看和更改配额。从 API库列表或启用的API 页面中选择API,您将转到包含该API的概述,使用情况和配额链接的页面。选择配额可让您查看和更改与配额相关的设置。选择用法可为您提供使用情况统计信息以及响应代码和方法信息。

尝试按照有关Google API控制台项目的答案here的第一部分进行操作。

另请查看有关INTEGRATION WITH GOOGLE CALENDAR API

的问题

答案 1 :(得分:0)

分析日志后,我找到了

创建

的限制

免费的Google Apps帐户 对于用户: 最初: 100个Extenal Guest域名电子邮件限制 累计: 1位外部访客,持续40分钟

例: 如果你有一个新的令牌,你可以发送任何一个 *。 50个活动有100位客人 - 每个活动2位客人 *。 25个活动有100位客人 - 每次活动4位嘉宾

每个限制 日:36位客人 周:252位客人 月:~1080位客人

购买的GSuite Calendar API的初始限制为 1000访客请求

https://github.com/manjeshpv/gsuite-google-calendar-api-limits