Google 推送通知给出 ParseError
Google Push notification giving ParseError
我正在尝试使用 google 日历推送通知,以便在用户事件的开始 or/and 结束日期时间发生变化时收到通知。
我已按照 push doc 中关于注册和验证我的域的所有步骤进行操作。
我的代码如下:
@blueprint.route("/notifications", methods={'GET','POST'})
def timeBlocker():
email = '....@gmail.com'
user = User.query.filter_by(email=email).first()
thecredentials = {
'client_id': os.getenv('client_id'),
'client_secret':os.getenv('client_secret'),
'refresh_token':user.refresh,
'grant_type': 'refresh_token',
}
req = requests.post(url='https://oauth2.googleapis.com/token', data = thecredentials)
req_ = req.json()
accessToken = req_["access_token"]
print('access token is ' + accessToken)
body = {
'id': '01234567-89ab-cdef-0123456789ab',
'type': 'web_hook',
'address': 'https://dayliii.com/notifications'
}
headers = {'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'application/json'
}
calendar = '....@group.calendar.google.com'
req = requests.post(url='https://www.googleapis.com/calendar/v3/calendars/....@group.calendar.google.com/events/watch', data = body, headers=headers)
return str(req.json())
错误:
{'error': {'errors': [{'domain': 'global', 'reason': 'parseError', 'message': 'Parse Error'}], 'code': 400, 'message': 'Parse Error'}}
我尝试将双引号转换为单引号 但它没有用。
最后,我想知道在开发模式下使用推送通知时是否应该注册并验证 'http://localhost:5000/' 的域所有权?因为这是我期望得到的错误,所以不确定它的解决方法。
request()函数中的data参数接受json格式。
您可以尝试使用 json.dumps() 将 body 变量转换为 json 字符串。
您的请求代码应如下所示:
req = requests.post(url='https://www.googleapis.com/calendar/v3/calendars/....@group.calendar.google.com/events/watch', data = json.dumps(body), headers=headers)
我正在尝试使用 google 日历推送通知,以便在用户事件的开始 or/and 结束日期时间发生变化时收到通知。
我已按照 push doc 中关于注册和验证我的域的所有步骤进行操作。
我的代码如下:
@blueprint.route("/notifications", methods={'GET','POST'})
def timeBlocker():
email = '....@gmail.com'
user = User.query.filter_by(email=email).first()
thecredentials = {
'client_id': os.getenv('client_id'),
'client_secret':os.getenv('client_secret'),
'refresh_token':user.refresh,
'grant_type': 'refresh_token',
}
req = requests.post(url='https://oauth2.googleapis.com/token', data = thecredentials)
req_ = req.json()
accessToken = req_["access_token"]
print('access token is ' + accessToken)
body = {
'id': '01234567-89ab-cdef-0123456789ab',
'type': 'web_hook',
'address': 'https://dayliii.com/notifications'
}
headers = {'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'application/json'
}
calendar = '....@group.calendar.google.com'
req = requests.post(url='https://www.googleapis.com/calendar/v3/calendars/....@group.calendar.google.com/events/watch', data = body, headers=headers)
return str(req.json())
错误:
{'error': {'errors': [{'domain': 'global', 'reason': 'parseError', 'message': 'Parse Error'}], 'code': 400, 'message': 'Parse Error'}}
我尝试将双引号转换为单引号
最后,我想知道在开发模式下使用推送通知时是否应该注册并验证 'http://localhost:5000/' 的域所有权?因为这是我期望得到的错误,所以不确定它的解决方法。
request()函数中的data参数接受json格式。
您可以尝试使用 json.dumps() 将 body 变量转换为 json 字符串。
您的请求代码应如下所示:
req = requests.post(url='https://www.googleapis.com/calendar/v3/calendars/....@group.calendar.google.com/events/watch', data = json.dumps(body), headers=headers)