iOS10だと正常にデータを取得できない
Closed this issue · 3 comments
Shinsuke-I commented
不具合の概要(Description of bug)
- SDKのバージョン(SDK version)
2.1.2 - 不具合が発生した環境(Environment requirement)
iPhone6Plus (iOS:10.0.1) - 不具合を再現させる手順・サンプルコード(Step for Reproduce bug / Sample code)
var ncmb = new NCMB(APP_KEY, CLIENT_KEY);
var mUser = ncmb.DataStore("M_USER");
mUser
.fetchAll()
.then(function(userResultList) {
alert(userResultList.length);
})
.catch(function(err) {
alert(err);
});
「iOS:9.3.5」の場合だとエラーが発生せず、正常にデータを取得出来ます。
※Monacaを使用して、mBaasと連携してます
- エラーメッセージ(Error messages)
Error: cannot GET https://mb.api.cloud.nifty.com:443/2013-09-01/classes/M_USER
(403)
mBaasからデータを取得する時にエラーになっているようです。
knight9999 commented
JSで生成しているsignature (Base64化したもの)が、iOS 9.3.5では44文字なのに、
なぜかiOS 10では52文字になってしまっています。このため、signatureが正常に機能
せず、サーバーに弾かれてしまいます。iOSの不具合のようですが、詳細は分かりません。
応急処置として、lib/signature.jsに次のようなパッチを当てれば、強制的に42文字でトリミング
して動作しています。
--- a/lib/signature.js
+++ b/lib/signature.js
@@ -37,5 +37,12 @@ function create(url, method, query, timestamp,
var sig = crypto
.createHmac("SHA256", clientkey || this.clientkey)
.update(sigStr).digest("base64");
+
+ if (sig.length == 52) {
+ sig = sig.substr(0,44);
+ }
+
+ // alert("sig : " + sig);
+
return sig;
Shinsuke-I commented
>knight9999様
詳しい回答ありがとうございます。
Monaca(アシアル様)のテクニカルサポートに問い合わさせていただいた者です。
ソースをいただいておりますので、対応はそちらで行っています。
iOS10かncmb.jsか、正式対応されるまで、
クローズさせないでおきます。
ncmbsdk commented
ご迷惑をおかけすることになり、誠に申し訳ございませんでした。
v2.1.3で対応が完了したのでクローズします。