1

我们正在为我们的应用程序构建一个自动化测试服务,这些应用程序使用通知中心来处理 APNS 消息。此过程的一部分将执行推送消息,因此我们需要一种自动化的方式来在某种脚本中创建通知中心(我正在尝试 Ruby,但任何面向 OSX 的命令行都可以工作 - 如果需要,我会切换)

我正在关注此 API 指南: http: //msdn.microsoft.com/en-us/library/azure/dn223269.aspx(编辑:更正链接)和此处的 SAS 信息:http: //msdn.microsoft.com/ zh-CN/库/azure/dn170477.aspx

我正在尝试“手动”在 mybus.servicebus.windows.net 下创建一个新的通知中心“testhub”,因为似乎没有可用的 SDK 公开此特定功能。

我所有的尝试都产生 401 错误 - “InvalidSignature:令牌的签名无效”

SAS 指南没有提到资源 URI 应该是什么。我已经尝试了 mybus.servicebus.windows.net 以及 mybus.servicebus.windows.net/testhub 并且有或没有 http:// 或 https:// - SAS 信息显示 https: 和一个尾随的“testhub”。我什至从端点尝试了 sb:// 。但是,API 指南有一个示例部分,其中显示的 SAS 不包括集线器名称。似乎没有任何组合对我有用。

我从 github 的 azure-push ruby​​ 代码中提取了这个实现

require 'azure'

def MakeSASToken(url, key_name, access_key, lifetime)
  target_uri = CGI.escape(url.downcase).gsub('+', '%20').downcase
  expires = Time.now.to_i + lifetime
  to_sign = "#{target_uri}\n#{expires}"

  signature = CGI.escape( Base64.strict_encode64( Digest::HMAC.digest(to_sign, access_key, Digest::SHA256))).gsub('+', '%20')

  return "SharedAccessSignature sig=#{signature}&se=#{expires}&skn=#{key_name}sr=#{target_uri}"
end

DefaultAccessKey = 'RootManageSharedAccessKey'
Putrequest = 'mybus.servicebus.windows.net'
KeyValue='=Hsuperduperkeyvalue0='

puts "Creating request for #{Putrequest}"

tok = MakeSASToken("#{Putrequest}", DefaultAccessKey, KeyValue, 30)
puts tok`

似乎没有任何东西可以生成有效的令牌 - 我错过了什么?

4

1 回答 1

0

您发布的链接是关于Event Hub的,它不是Notification Hub。这是通知中心 REST API。您也可以为 ServiceBus或开源Java SDK使用.NET 客户端库,这对于您的操作系统来说似乎是更好的选择。

于 2014-12-18T07:39:35.210 回答