有人能发现什么是错的吗?回调网址是有效的ssl网址。另外我们如何知道谷歌服务本身是否存在问题?我的网络服务器日志中根本没有看到回调网址的帖子..
我似乎没有收到通知。
StoredCredentialsDBContext db = new StoredCredentialsDBContext();
TimelineItem item = new TimelineItem()
{
Creator=new Contact(){DisplayName="DLN Reply Card",Id="TESTREPLYCARD" },
Title = Test Number",
Text = "Say Test Number",
Notification = new NotificationConfig() { Level = "DEFAULT" }
};
Google.Apis.Mirror.v1.Data.MenuItem menuItem=new Google.Apis.Mirror.v1.Data.MenuItem();
menuItem.Action="REPLY";
item.MenuItems = new List<Google.Apis.Mirror.v1.Data.MenuItem>();
item.MenuItems.Add(menuItem);
foreach (StoredCredentials creds in db.StoredCredentialSet)
{
AuthorizationState state = new AuthorizationState()
{
AccessToken = creds.AccessToken,
RefreshToken = creds.RefreshToken
};
MirrorService service = new MirrorService(new BaseClientService.Initializer()
{
Authenticator = Utils.GetAuthenticatorFromState(state)
});
item.IsPinned = true;
Subscription subscription = new Subscription();
subscription.Collection = "timeline";
subscription.VerifyToken = "XXXXX";
subscription.UserToken = creds.UserId;
subscription.Operation = new List<String>();
subscription.Operation.Add("INSERT");
subscription.Operation.Add("UPDATE");
subscription.CallbackUrl = "https://changedthename.com/GG/Notify";
Subscription t=service.Subscriptions.Insert(subscription).Fetch();
TimelineItem i=service.Timeline.Insert(item).Fetch();
SubscriptionsListResponse r= service.Subscriptions.List().Fetch();
}
执行Fetch()的输出是订阅对象(我只是隐藏了域名):
?t
{Google.Apis.Mirror.v1.Data.Subscription}
CallbackUrl: "https://changedname.com/GG/Notify"
Collection: "timeline"
ETag: null
Id: "timeline"
Kind: "mirror#subscription"
Notification: null
Operation: Count = 2
Updated: "2014-02-06T16:59:25.642Z"
UserToken: "XXXXXXXXXX"
VerifyToken: "XXXXX"
我使用的项目:
?i
{Google.Apis.Mirror.v1.Data.TimelineItem}
Attachments: null
BundleId: null
CanonicalUrl: null
Created: "2014-02-06T16:59:32.729Z"
Creator: {Google.Apis.Mirror.v1.Data.Contact}
DisplayTime: null
ETag: "1391705972729"
Html: null
HtmlPages: null
Id: "73b75493-3371-4b2c-856d-df8674b54ede"
InReplyTo: null
IsBundleCover: null
IsDeleted: null
IsPinned: false
Kind: "mirror#timelineItem"
Location: null
MenuItems: Count = 1
Notification: {Google.Apis.Mirror.v1.Data.NotificationConfig}
PinScore: null
Recipients: null
SelfLink: "https://www.googleapis.com/mirror/v1/timeline/73b75493-3371-4b2c-856d-df8674b54ede"
SourceItemId: null
SpeakableText: null
Text: "Say Test Number"
Title: "Test Number"
Updated: "2014-02-06T16:59:32.729Z"
?r
{Google.Apis.Mirror.v1.Data.SubscriptionsListResponse}
ETag: null
Items: Count = 1
Kind: "mirror#subscriptionsList"
使用SOapui
我的回调网址的测试有效负载使用以下有效负载后发送请求
{
"collection": "timeline",
"itemId": "d45fcc3a-4346-453a-8783-88667a002387",
"operation": "UPDATE",
"userToken": "XXXXXXX",
"verifyToken": "XXXXX",
"userActions": [
{
"type": "<TYPE>",
"payload": "<PAYLOAD>"
}
]
}
来自soapui的200 ok回复
HTTP/1.1 200 OK
Cache-Control: private
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 04 Feb 2014 17:48:47 GMT
Content-Length: 0
答案 0 :(得分:1)
我做了几个假设:
您正在看到张贴在Glass上的卡片。
您正在使用.NET
副手,我不知道有什么方法可以确保镜像服务正常工作 - 但每次我怀疑它有问题时,它都证明是我的服务。一些事情要尝试:
确保您的回调网址确实有效,接受POST命令,并使用HTTP代码200进行响应。您正确使用HTTPS,但请确保您可以使用curl或wget通过POST访问该网站操作,而不仅仅是GET操作。从您所在域以外的计算机上进行测试,以确保正确查找主机名并且您没有被防火墙阻止。
您可能希望在添加时间轴项目之前进行订阅 - 最佳做法是在用户首次登录时发出一次订阅。我不认为这是它,但我可以看到由于某种原因,订阅最终可能无法正确应用。
测试以确保在服务器上正确输入项目和订阅 - 检查两个命令返回的内容以确保它们正确或发出service.Subscriptions.List()。Fetch()并检查结果。
更新:根据您发布的Subscription.Insert()。Fetch()的结果,有些东西看起来很奇怪。 ETag和Id当然不应该为空。有关订阅插入尝试的信息似乎不正确。
您可能想尝试使用Subscriptions.List()。Fetch()并查看是否有实际注册的订阅。
更新2 :我仍然建议你做以下其中一项或两项:
使用https://developers.google.com/glass/v1/reference/subscriptions/insert#examples中.NET示例中提供的代码替换您的订阅代码并进行调用。我对.NET知之甚少,但可能有一个原因导致代码导致问题,因为看起来你的Fetch()调用的结果不是有效的订阅。
在https://developers.google.com/glass/v1/reference/subscriptions/list#examples的.NET示例中实现该方法,并在创建后调用它。如果未列出任何订阅,则表明您出于某种原因未创建订阅。