1

APNS メッセージに Notification Hubs を使用するアプリの自動テスト サービスを構築しています。このプロセスの一部でプッシュ メッセージが実行されるため、何らかのスクリプトで Notification Hubs を作成する自動化された方法が必要です (私は Ruby を試していますが、OSX 向けのコマンド ライン指向であれば何でも動作します - 必要に応じて切り替えます)。

私はこの API ガイドに従っています: http://msdn.microsoft.com/en-us/library/azure/dn223269.aspx (編集: 修正されたリンク) および SAS 情報はこちら: http://msdn.microsoft.com/ en-us/library/azure/dn170477.aspx

利用可能な SDK のいずれもこの特定の機能を公開していないように見えるため、mybus.servicebus.windows.net の下に新しい通知ハブ「testhub」を「手動で」作成しようとしています。

すべての試行で 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

投稿したリンクは、 Notification HubではないEvent Hubに関するものです。これがNotification Hubs REST APIです。また、ServiceBus 用の .NET クライアント ライブラリや、OS により適したオープン ソースJava SDKを使用することもできます。

于 2014-12-18T07:39:35.210 に答える