Мы создаем автоматизированную службу тестирования для наших приложений, использующих 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`
Ничто, кажется, генерировать правильный маркер - что мне не хватает?
Спасибо за это, efimovandr - скорректировал ссылку. Большинство остальных инструментов автоматизации сборки iOS, похоже, находятся в Ruby, но я могу просто запустить Mono-инструмент, как вы предлагаете :) –