如何正确观看gmail推送通知

问题描述 投票:0回答:2

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

Google 提供此教程页面:https://developers.google.com/gmail/api/guides/push

到目前为止我做了什么:

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

到目前为止一切正常,但我的知识仅限于此。在我看来,我必须在 watch 方法上实现某种无限 while 循环,以检查

historyId
的更改。但如果是这样,为什么
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()
python push-notification google-api gmail-api
2个回答
2
投票

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

  • 设置观看请求后,当有邮箱更新
  • 时,您的应用程序将自动接收推送通知 例如,当您收到新电子邮件时,
  • 会发生邮箱更新
  • 简单来说,
  • historyId
    反映了您邮箱在某个时刻(例如,当您设置观看请求时)的状态
  • 此值仅作为参考重要,因为除非
  • 另有指定,您只会收到有关特定 historyId
     对应时刻之后发生的邮箱更新的通知
    
  • 您不需要无限循环地接收通知,您只需要
  • 每7天更新一次观看请求
  • 根据您的实现,您可能需要一些处理 POST 请求的 HTTP 库 - 每当 Gmail API 向您的服务器发布通知时。

0
投票
您的问题似乎是您没有收到任何回调,如果是这种情况,那么您可以尝试以下步骤

    创建一个主题。将发布者角色授予“
  1. [电子邮件受保护]”。 权限部分图片
  2. 为此主题创建订阅
  3. 在订阅设置中将
  4. 交付类型
  5. 更改为推送 配送类型设置 端点 URL 正确且可通过互联网访问。您的网址应如下所示 https://mydomain/gmail-service/api/path
  6. 发送带有正确主题名称的观看请求
© www.soinside.com 2019 - 2024. All rights reserved.