Subscriptions: insert

需要授权

创建新订阅。查看示例

请求

HTTP 请求

POST https://www.googleapis.com/mirror/v1/subscriptions

授权

此请求需要获得下列范围的授权(详细了解身份验证和授权)。

范围
https://www.googleapis.com/auth/glass.timeline

请求正文

在请求正文中,提供具有以下属性的 Subscriptions resource

属性名称 说明 备注
必需属性
callbackUrl string 应在其中传递通知的网址(必须以 https:// 开头)。 可写入
collection string 要订阅的集合。允许的值为:
  • timeline - 时间轴中的更改,包括插入、删除和更新。
  • locations - 位置更新。
  • settings - 设置更新。
可写入
可选属性
operation[] list 应订阅的操作列表。空列表表示应该订阅该集合上的所有操作。允许的值为:
  • UPDATE - 商品已更新。
  • INSERT - 已插入新项。
  • DELETE - 这项内容已被删除。
可写入
userToken string 在通知中向订阅者发送的不透明令牌,以便它可以确定用户的 ID。 可写入
verifyToken string 在通知中向订阅者发送的秘密令牌,以便验证通知是否由 Google 生成。 可写入

响应

如果成功,此方法将在响应正文中返回一项 Subscriptions resource

示例

注意:此方法的代码示例并未列出所有受支持的编程语言(请参阅客户端库页面,查看受支持的语言列表)。

Java

使用 Java 客户端库

import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.Subscription;

import java.io.IOException;
import java.util.List;

public class MyClass {
  // ...

  /**
   * Subscribe to notifications for the current user.
   * 
   * @param service Authorized Mirror service.
   * @param collection Collection to subscribe to (supported values are "timeline" and
            "locations").
   * @param userToken Opaque token used by the Glassware to identify the user
   *        the notification pings are sent for (recommended).
   * @param verifyToken Opaque token used by the Glassware to verify that the
   *        notification pings are sent by the API (optional).
   * @param callbackUrl URL receiving notification pings (must be HTTPS).
   * @param operation List of operations to subscribe to. Valid values are
   *        "UPDATE", "INSERT" and "DELETE" or {@code null} to subscribe to all.
   */
  public static void subscribeToNotifications(Mirror service, String collection, String userToken,
      String verifyToken, String callbackUrl, List<String> operation) {
    Subscription subscription = new Subscription();
    subscription.setCollection(collection).setUserToken(userToken).setVerifyToken(verifyToken)
        .setCallbackUrl(callbackUrl).setOperation(operation);
    try {
      service.subscriptions().insert(subscription).execute();
    } catch (IOException e) {
      System.err.println("An error occurred: " + e);
    }
  }

  // ...
}

.NET

使用 .NET 客户端库

using System;
using System.Collections.Generic;

using Google.Apis.Mirror.v1;
using Google.Apis.Mirror.v1.Data;

public class MyClass {
  // ...

  /// <summary>
  /// Subscribe to notifications for the current user.
  /// </summary>
  /// <param name='service'>Authorized Mirror service.</param>
  /// <param name='collection'>
  /// Collection to subscribe to (supported values are "timeline" and
  /// "locations").
  /// </param>
  /// <param name='userToken'>
  /// Opaque token used by the Glassware to identify the user the
  /// notification pings are sent for (recommended).
  /// </param>
  /// <param name='verifyToken'>
  /// Opaque token used by the Glassware to verify that the notification
  /// pings are sent by the API (optional).
  /// </param>
  /// <param name='callbackUrl'>
  /// URL receiving notification pings (must be HTTPS).
  /// </param>
  /// <param name='operation'>
  /// List of operations to subscribe to. Valid values are "UPDATE", "INSERT"
  /// and "DELETE" or {@code null} to subscribe to all.
  /// </param>
  public static void SubscribeToNotifications(MirrorService service,
      String collection, String userToken, String verifyToken,
      String callbackUrl, List<String> operation) {
    Subscription subscription = new Subscription() {
      Collection = collection,
      UserToken = userToken,
      VerifyToken = verifyToken,
      CallbackUrl = callbackUrl,
      Operation = operation
    };
    try {
      service.Subscriptions.Insert(subscription).Fetch();
    } catch (Exception e) {
      Console.WriteLine("An error occurred: " + e.Message);
    }
  }

  // ...
}

PHP

使用 PHP 客户端库

/**
 * Subscribe to notifications for the current user.
 *
 * @param Google_MirrorService $service Authorized Mirror service.
 * @param string $collection Collection to subscribe to (supported
 *                           values are "timeline" and "locations").
 * @param string $userToken Opaque token used by the Service to
 *                          identify the  user the notification pings
 *                          are sent for (recommended).
 * @param string $verifyToken Opaque token used by the Service to verify
 *                            that the notification pings are sent by
 *                            the API (optional).
 * @param string $callbackUrl URL receiving notification pings (must be HTTPS).
 * @param Array $operation List of operations to subscribe to. Valid values
 *                         are "UPDATE", "INSERT" and "DELETE" or
 *                         null to subscribe to all.
 */
function subscribeToNotifications($service, $collection, $userToken,
     $verifyToken, $callbackUrl, $operation) {
  try {
    $subscription = new Google_Subscription();
    $subscription->setCollection($collection);
    $subscription->setUserToken($userToken);
    $subscription->setVerifyToken($verifyToken);
    $subscription->setCallbackUrl($callbackUrl);
    $subscription->setOperation($operation);
    $service->subscriptions->insert($subscription);
  } catch (Exception $e) {
    print 'An error occurred: ' . $e->getMessage();
  }
}

Python

使用 Python 客户端库

from apiclient import errors
# ...

def subscribe_to_notifications(service, collection, user_token, verify_token,
                               callback_url, operation):
  """Subscribe to notifications for the current user.

  Args:
    service: Authorized Mirror service.
    collection: Collection to subscribe to (supported values are "timeline"
                and "locations").
    user_token: Opaque token used by the Glassware to identify the user the
                notification pings are sent for (recommended).
    verify_token: Opaque token used by the Glassware to verify that the
                  notification pings are sent by the API (optional).
    callback_url: URL receiving notification pings (must be HTTPS).
    operation: List of operations to subscribe to. Valid values are "UPDATE",
               "INSERT" and "DELETE" or None to subscribe to all.
  """
  subscription = {
      'collection': collection,
      'userToken': user_token,
      'verifyToken': verify_token,
      'callbackUrl': callback_url,
      'operation': operation
   }
  try:
    service.subscriptions().insert(body=subscription).execute()
  except errors.HttpError, error:
    print 'An error occurred: %s' % e

Ruby

使用 Ruby 客户端库

##
# Subscribe to notifications for the current user.
#
# @param [Google::APIClient] client
#   Authorized client instance.
# @param [String] collection
#   Collection to subscribe to (supported values are "timeline" and "locations").
# @param [String] user_token
#   Opaque token used by the Glassware to identify the user the notification
#   pings are sent for (recommended).
# @param [String] verify_token
#   Opaque token used by the Glassware to verify that the notification pings are
#   sent by the API (optional).
# @param [String] callback_url
#   URL receiving notification pings (must be HTTPS).
# @param [Array] operation
#   List of operations to subscribe to. Valid values are "UPDATE", "INSERT" and
#   "DELETE" or nil to subscribe to all.
# @return nil
def subscribe_to_notification(client, collection, user_token, verify_token,
                              callback_url, operation)
  mirror = client.discovered_api('mirror', 'v1')
  subscription = mirror.subscriptions.insert.request_schema.new({
    'collection' => collection,
    'userToken' => user_token,
    'verifyToken' => verify_token,
    'callbackUrl' => callback_url,
    'operation' => operation})
  result = client.execute(
    :api_method => mirror.subscriptions.insert,
    :body_object => subscription)
  if result.error?
    puts "An error occurred: #{result.data['error']['message']}"
  end
end

Go

使用 Go 客户端库

import (
	"code.google.com/p/google-api-go-client/mirror/v1"
	"fmt"
)

// SubscribeToNotifications subscribes to notifications for the current user.
func SubscribeToNotifications(g *mirror.Service, collection string,
	userToken string, verifyToken string, callbackUrl string,
	operations []string) (*mirror.Subscription, error) {
	s := &mirror.Subscription{
		Collection:  collection,
		UserToken:   userToken,
		VerifyToken: verifyToken,
		CallbackUrl: callbackUrl,
	}
	r, err := g.Subscriptions.Insert(s).Do()
	if err != nil {
		fmt.Printf("An error occurred: %v\n", err)
		return nil, err
	}
	return r, nil
}

原始 HTTP

不使用客户端库。

POST /mirror/v1/subscriptions HTTP/1.1
Authorization: Bearer auth token
Content-Type: application/json
Content-Length: length

{
  "collection": "timeline"
  "userToken": "harold_penguin",
  "operation": ["UPDATE"],
  "callbackUrl": "https://example.com/notify/callback"
}