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 ユーザーコミュニティ