FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Unity SDKのデータ取得時にUnauthorized operations for signatureが出る場合の対処法

f:id:mbaasdevrel:20200609155631p:plain

Unity SDKを使ってデータストアのデータ取得を行う際に Unauthorized operations for signature が発生することがあります。これは複雑な検索条件を指定した場合に発生します。

現在SDKは修正中ですが、その対処法を紹介します。

修正点

先に修正点を書いておきます。 NCMB/Script/NCMBQuery.cs の772行目を次のように修正します。

// 修正前
string encodeJsonValue = Uri.EscapeUriString (jsonValue);//JSON化された値をエンコードされた文字列
// 修正後
string encodeJsonValue = Uri.EscapeDataString (jsonValue);//JSON化された値をエンコードされた文字列

内容

Uri.EscapeUriString と Uri.EscapeDataString はURIエスケープの範囲が異なります。

  • Uri.EscapeUriString
    encodeURI相当
  • Uri.EscapeDataString
    encodeURIComponent相当

この違いは [] のエンコーディングに出ます。

Uri.EscapeUriString("[]")
// => "[]"
Uri.EscapeDataString("[]")
// => "%5B%5D"

まとめ

equalToなどの簡単なオペランドであれば発生しませんが、配列などを使った検索条件を指定した際にエラーが出ていたかと思います。現在、こうしたエラーに悩まれている方は、緊急的な対応ですが、上記の修正をお願いします。

こちらの問題はコミュニティに寄せられた情報を元にしています。今後も不具合や不明点があれば、コミュニティまでお寄せください。

NIFCLOUD-mbaas/UserCommunity: ニフクラ mobile backend ユーザーコミュニティ

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。