1

我正在使用 Google Mirror API,我正在努力寻找一种仅将卡片推送给特定用户的方法。

当我尝试使用以下 Python 代码发布卡片时,给定用户 ID( 12345677 ):

 timeline_item = {'text': 'Test10'}
 timeline_item['recipients'] = [{'id':'12345677'}]
 self.mirror_service.timeline().insert(body=timeline_item).execute()

该卡片在所有其他测试用户的时间线中可见。

我究竟做错了什么?

4

2 回答 2

1

看起来您正在使用 Python 进行编码并使用Google APIs Client Library for Python。要将时间线项目推送到特定用户 ID,请在创建镜像服务时设置用户 ID。Mirror API Python 快速入门在其通知代码中提供了如何执行此操作的示例。该recipients字段与该项目被推送到谁的时间线无关。

from oauth2client.appengine import StorageByKeyName
from model import Credentials

self.mirror_service = create_service(
        'mirror', 'v1',
        StorageByKeyName(Credentials, MY_USER_ID, 'credentials').get())
timeline_item = {'text': 'Test10'}
self.mirror_service.timeline().insert(body=timeline_item).execute()

代码create_service

import httplib2
from apiclient.discovery import build

from model import Credentials

def create_service(service, version, creds=None):
  """Create a Google API service.

  Load an API service from a discovery document and authorize it with the
  provided credentials.

  Args:
    service: Service name (e.g 'mirror', 'oauth2').
    version: Service version (e.g 'v1').
    creds: Credentials used to authorize service.
  Returns:
    Authorized Google API service.
  """
  # Instantiate an Http instance
  http = httplib2.Http()

  if creds:
    # Authorize the Http instance with the passed credentials
    creds.authorize(http)

  return build(service, version, http=http)
于 2013-07-24T22:32:11.053 回答
0

recipients字段未指定应将时间线项目发送给谁。它包含有关谁已收到卡片信息的信息 - 它旨在供 REPLY_ALL 卡片使用,以便能够处理应发送给多人的回复(不一定使用 Glass)。

目前尚不清楚您使用的是什么语言,但听起来您正在将项目发送给您服务的所有经过身份验证的用户。

通常,您将指定特定用户的 OAuth 令牌以写入他们的时间线。

于 2013-07-24T14:00:40.580 回答