我使用python和google-api-python-client == 1.6.2与用户Google云端硬盘合作。一切都运行良好,没有任何错误,但我没有从Google云端硬盘(Google Drive API Documentation)收到任何推送通知。 "注册您的域名"成功完成。 "创建通知渠道"完成后,Channel对象返回给我。
我的代码:
try:
drive_service.files().watch(
fileId='CPw3cbyqkoC1QMK48R24-Z2CG9w',
body=dict(
id=str(uuid.uuid4()),
resourceId='CPw3cbyqkoC1QMK48R24-Z2CG9w',
type='web_hook',
address='https://my-domain-address/web_hook'
)
).execute()
except HttpError as err:
logger.exception('HttpError {}: content={}'.format(err.uri, err.content))
响应:
{
u'resourceId': u'CPw3cbyqkoC1QMK48R24-Z2CG9w',
u'kind': u'api#channel',
u'expiration': u'1495448262000',
u'id': u'8837a4ad-98c0-4e89-8899-c07e12e3bffc',
u'resourceUri': u'https://www.googleapis.com/drive/v3/files/0B2lHB_g_GJY9RWx6UkRjWUFjSVU?acknowledgeAbuse=false&alt=json&supportsTeamDrives=false&alt=json'
}
之后,当用户修改观看的Google云端硬盘资源时,https://my-domain-address/web_hook
没有任何请求。
你有什么想法我做错了吗?
答案 0 :(得分:0)
记录与搜索解决方案时发现的问题相关联的消息:
64.233.172.141 - - [22/May/2017:09:11:10 +0000] "POST /web_hook HTTP/1.1" 403 807 "-" "APIs-Google; (+https://developers.google.com/webmasters/APIs-Google.html)"
64.233.172.143 - - [22/May/2017:09:11:12 +0000] "POST /web_hook HTTP/1.1" 403 807 "-" "APIs-Google; (+https://developers.google.com/webmasters/APIs-Google.html)"
64.233.172.143 - - [22/May/2017:09:11:13 +0000] "POST /web_hook HTTP/1.1" 403 807 "-" "APIs-Google; (+https://developers.google.com/webmasters/APIs-Google.html)"
所以我收到了我的webhook的Google云端硬盘请求。
首先,我认为Nginx
阻止了它们,但在我看到所有请求都是POST
之后。
所以我遇到了转发POST请求的问题。我也使用Django并忘记禁用CSRh保护到webhook。这是我的问题的解决方案。
如果有人帮助我,我会很高兴的。