2014-12-18 2 views
0

Мы создаем автоматизированную службу тестирования для наших приложений, использующих Notification Hubs для сообщений APNS. Часть этого процесса будет осуществлять push-сообщения, поэтому нам нужен автоматизированный способ создания концентраторов уведомлений в каком-то сценарии (я пытаюсь использовать Ruby, но что-то из командной строки, ориентированное на OSX, будет работать - я переключусь в случае необходимости)Create NotificationHub в скрипте (рекомендуется Ruby)

Я следую за это API руководство: http://msdn.microsoft.com/en-us/library/azure/dn223269.aspx (редактирование: исправлена ​​ссылка) и информация SAS здесь: http://msdn.microsoft.com/en-us/library/azure/dn170477.aspx

Я пытаюсь создать новый Notification хаб «testhub» под mybus.servicebus.windows.net " от руки ", поскольку ни один из доступных SDK, похоже, не раскрывает эту конкретную функцию.

Все мои попытки генерации 401 ошибки - «InvalidSignature: Маркер имеет недопустимую подпись»

Руководство SAS не упоминает, что ресурс URI должен быть. Я пробовал mybus.servicebus.windows.net, а также mybus.servicebus.windows.net/testhub и с или без http: // или https: // - информация SAS показывает https: и завершающий «testhub». Я даже пробовал sb: // с конечной точки. Однако руководство API имеет раздел примеров, в котором отображается SAS, НЕ включает имя концентратора. Кажется, комбо не работало для меня.

Я поднял эту реализацию из лазури-нажимного кода рубина из GitHub

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` 

Ничто, кажется, генерировать правильный маркер - что мне не хватает?

ответ

0

Link вы вывесили около Event Hub, который не Notification Hub. Вот Notification Hubs REST API. Также вы можете использовать .NET client library for ServiceBus или с открытым исходным кодом Java SDK, который, кажется, лучший вариант для вашей ОС.

+0

Спасибо за это, efimovandr - скорректировал ссылку. Большинство остальных инструментов автоматизации сборки iOS, похоже, находятся в Ruby, но я могу просто запустить Mono-инструмент, как вы предлагаете :) –

Смежные вопросы