当前位置: 首页 > 知识库问答 >
问题:

Gmail API推送通知给出错误403

逄兴昌
2023-03-14

我正在尝试获取关于我在电子邮件中收到的所有新收件箱邮件的推送通知。我已经配置了pubsub文档中提到的pubsub客户端。以下是代码:

import httplib2

from apiclient import discovery
from oauth2client import client as oauth2client
from lib.common.models.main.users import User

from oauth2client.client import SignedJwtAssertionCredentials,\
    AccessTokenRefreshError

PUBSUB_SCOPES = ['https://www.googleapis.com/auth/pubsub']

def create_pubsub_client(http=None):
    credentials = oauth2client.GoogleCredentials.get_application_default()
    if credentials.create_scoped_required():
        credentials = credentials.create_scoped(PUBSUB_SCOPES)
    if not http:
        http = httplib2.Http()
    credentials.authorize(http)

    return discovery.build('pubsub', 'v1', http=http)

pubsub = create_pubsub_client()

topic = 'projects/<project-name>/topics/<Topic-name>'
policy = {
  'policy': {
    'bindings': [{
      'role': 'roles/pubsub.publisher',
      'members': ['serviceAccount:<my-service-account>'],
    }],
  }
}
resp = pubsub.projects().topics().setIamPolicy(resource=topic, body=policy).execute()

request = {
  'labelIds': ['INBOX'],
  'topicName': 'projects/<project-name>/topics/<Topic-name>'
}

f = file('link-to.p12', 'rb')
key = f.read()
f.close()

credentials = SignedJwtAssertionCredentials(
    'service-account-email',
    key,
    scope='https://mail.google.com/',
)

user = User.query.filter(User.id == 143).first()
accesskey = user.get_access_key(True)
credentials.access_token = accesskey['key']

service = discovery.build('gmail','v1',credentials=credentials)
service.users().watch(userId='me', body=request).execute()

当我运行上述程序时,我遇到以下错误:

回溯(最后一次调用):文件“/home/kmittal/workspace/engine/workers/newPubSubClient.py”,第82行,正在使用中。用户()。监视(userId='me',body=request)。execute()文件“/usr/local/lib/python2.7/dist packages/oauth2client/util.py”,第135行,在位置包装返回包装(*args,**kwargs)文件“/usr/local/lib/python2.7/dist packages/googleapiclient/http.py”,第723行,在execute-raise-HttpError(resp,content,uri=self.uri)googleapiclient中。错误。HttpError:https://www.googleapis.com/gmail/v1/users/me/watch?alt=json返回“无效的topicName与项目/某些项目/另一个项目/主题/*”不匹配

共有1个答案

寇涵容
2023-03-14

根据另一个答案,看起来你只能为属于你自己项目的主题创建一个手表,而不是另一个项目。留档似乎支持这一点,因为它意味着你必须指定我的项目(你自己的项目ID):

主题名称可以是您在项目下选择的任何名称(即匹配projects/myproject/topics/*,其中myproject是在Google开发者控制台中为您的项目列出的项目ID)。

 类似资料:
  • 我用push notification与解析服务器连接了应用程序,但问题是我遇到了错误,它说:registerforRemotenotification类型在IOS 8.0版本中不推荐使用:请使用register for remote notification和register user notification设置。但这段代码是针对iOS8的。 有谁能帮我找到正确的代码吗?

  • 使用Phonegap推送通知,如下所示 http://devgirl.org/2013/07/17/tutorial-implement-push-notifications-in-your-phoneGap-application/ 在使用.apk构建.apk时,我得到了这个错误.. 失败 失败:生成失败,出现异常。 出了什么问题: null 总时间:15.085秒 错误:带有args:/s,/

  • 我无法发送通知 {“多播id”:2200169071930988341,“成功”:0,“失败”:1,“规范id”:0,“结果”:[{“错误”:“无效注册”}]

  • 首先,我想声明我一直在研究推送通知和web通知之间的关系,但我有点困惑。 我从这里读到PWAs的推送通知在Safari上的iOS(iPhone)不起作用:从PWA向iOS发送推送通知 然而,如果iPhone用户使用的是Chrome,这是否意味着它们可以工作呢?或者推送通知在任何浏览器上对iPhone中的PWAs都不起作用? 这就把我带到了web通知。web通知在后台对PWAs起作用吗?我的问题是w

  • 通过上面的行,我得到了一个URL,它将在大约一个月内有用。 现在我不可能做的是将推送通知发送到应用程序。 任何关于如何使用Uri和如何将信息发送到它的光我会很高兴,因为我的400错误,那是关于我的post消息的一些错误。 我可以在发布或调试模式下获得推送通知吗? 使用PHP可以完成带有正确Uri的推送通知吗?

  • 我有一些关于实现推送通知的问题。事情是, > 订阅对象中的所有数据都是必需的吗?或者只有终点。 如果用户登录的设备超过10台,我是否需要为每个设备存储订阅值?是这样的吗?还是应该存储上次登录设备的订阅值?如果是这样,那么其余9个将不会收到任何通知。 如果您正在存储所有loggedin设备的订阅值,那么用户是否登录了多个浏览器?他会在每个浏览器中收到通知吗?这是标准做法吗? 欢迎提出建议,任何标准做