2

我创建了一个带有自定义菜单项的时间线卡。当用户选择该菜单项时,我想得到一个回调。

// Create a menu item for the card
var mnuActivate = new MenuItem() {
    Action = "CUSTOM",
    RemoveWhenSelected = new bool?(true),
    Id = ACCEPT_ID,
    Values = new List<MenuValue>() {
        new MenuValue() {
            State="DEFAULT",
            DisplayName="Activate",
        },
        new MenuValue() {
            State="PENDING",
            DisplayName="Activating..."
        },
        new MenuValue() {
            State="CONFIRMED",
            DisplayName="Activated"
        }
    }
}

// Create a new card for the user's timeline
var item = new TimelineItem() {
    Html = html,
    Notification = new NotificationConfig() { Level = "DEFAULT" },
    MenuItems = new List<MenuItem>() { mnuActivate }
};

var card = this._service.Timeline.Insert(item).Fetch();

然后我订阅所有时间线事件并提供一个 https 回调 URL

 // Create a new subscription
var subscription = new Subscription()
{
    Collection = "timeline",
    Operation = new List(),
    CallbackUrl = "https://mypubliclyavailableserver.com/notify"
};
this._service.Subscriptions.Insert(subscription).Fetch();
// Retrieve a list of subscriptions to make sure it is there.
var mySubcriptions = this._service.Subscriptions.List().Fetch();
if (mySubcriptions != null && mySubcriptions.Items != null && mySubcriptions.Items.Count == 1)
{
    Console.WriteLine("Subscription created successfully.");
}
因此,据我所知,订阅的创建没有任何问题。但是在与卡交互后,我从未收到回调。我错过了什么?

我尝试过的事情:

  1. 在订阅 obj、时间线卡和 menuItem 上填充 Id
  2. 在创建卡之前而不是之后订阅
  3. 在订阅对象上添加 userId 作为 UserToken
  4. 直接调用我的回调 URL 以确保它正在监听

来自 GET /mirror/v1/subscriptions 的 JSON 响应:

{
 "kind": "mirror#subscriptionsList",
 "items": [
  {
   "kind": "mirror#subscription",
   "id": "timeline",
   "updated": "2013-10-28T15:19:19.404Z",
   "collection": "timeline",
   "callbackUrl": "https://mypubliclyavailableserver.com/notify"
  }
 ]
}
4

3 回答 3

0

我不是这方面的专家。但是搜索同一个话题,我找到了这个https://developers.google.com/glass/subscription-proxy,照这个,不需要转发url吗?我认为您的示例中的回调 url 格式不正确?

于 2013-10-29T14:49:02.003 回答
0

您是否尝试过不使用“操作”。

var subscription = new Subscription() { Collection = "timeline", CallbackUrl = " https://mypubliclyavailableserver.com/notify " }

这是一个可选的https://developers.google.com/glass/v1/reference/subscriptions/insert

于 2013-10-29T15:37:38.197 回答
0

原来我的回调 URL 中的 SSL 证书有问题https://mypubliclyavailableserver.com/notify

当我尝试从 hackst.com 访问我的网络服务时,它起作用了。我猜他们忽略了 Google 看到的“无法为 SSL/TLS 安全通道建立信任关系”错误。

谷歌没有可以发送错误的位置,所以我只是不知道它是否在给我打电话。也许如果在订阅过程中,如果回调 URL 的证书无效,可能会返回错误?

于 2013-10-30T16:06:45.837 回答