繁体   English   中英

如何正确观看 gmail 推送通知

[英]How to properly watch for gmail push notifications

我不明白如何正确观看 gmail 推送通知(而且我对 web 的编码一无所知)。

谷歌给这个教程页面: https://developers.google.com/gmail/api/guides/push

到目前为止我做了什么:

  • 先决条件:完成
  • 创建主题:完成
  • 创建订阅:完成
  • 授予您主题的发布权:完成
  • watch() 方法有效并给出以下结果: {'historyId': '714707', 'expiration': '1618824687477'}

到目前为止一切正常,但我的知识到此为止。 在我看来,我必须在 watch 方法上实现某种无限 while 循环,以检查historyId的变化。 但如果是这样,为什么watch()方法上会有一个stop()方法,为什么 watch 结果上会有一个expiration字段? 我应该从那里做什么?

到目前为止,这是我的实现:

from __future__ import print_function
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials


SCOPES = ['https://mail.google.com/']
MY_TOPIC_NAME = 'my/toppic/name'

creds = None
if os.path.exists('token.json'):
        creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
                creds.refresh(Request())
else:
        flow = InstalledAppFlow.from_client_secrets_file('./my_creds.json', SCOPES)
        creds = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
        token.write(creds.to_json())



gmail = build('gmail', 'v1', credentials=creds)
request = {'labelIds': ['INBOX'],'topicName': MY_TOPIC_NAME}
gmail.users().watch(userId='me', body=request).execute()

我认为对推送通知的概念存在一些误解

  • 设置监视请求后,当有邮箱更新时,您的应用程序将自动接收推送通知
  • 例如,当您收到新的 email 时,会发生邮箱更新
  • historyId简单的说就是反映了你邮箱在某个时刻的状态(比如你设置了watch请求的时候)
  • 此值仅供参考,因为除非另有说明,否则您只会收到有关特定historyId对应时刻之后发生的邮箱更新的通知
  • 您不需要无限循环接收通知,您只需要每 7 天更新一次手表请求
  • 根据您的实施,您可能需要一些 HTTP 库来处理 POST 请求 - 每当 Gmail API 将通知发布到您的服务器时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM