Open kakusato opened 2 years ago
保存した後、更新するのではいかがでしょう?
user.SignUpAsync ((NCMBException e) => {
if (e != null) {
UnityEngine.Debug.Log ("新規登録に失敗: " + e.ErrorMessage);
} else {
UnityEngine.Debug.Log ("新規登録に成功");
SceneManager.LoadScene("LogOut");
// ここでACL変更して更新
}
});
具体的に教えて頂けませんか? ACL設定の書き方がよくわからなく。 以下の様にしてみましたが、反映されないようで。
public void Signin ()
{
//NCMBUserのインスタンス作成
NCMBUser user = new NCMBUser ();
//全会員に対して
//読み込み権限を全開放
//NCMBACL acl = new NCMBACL();
//acl.PublicReadAccess = true;
//user.ACL = acl;
//ユーザ名とパスワードの設定
user.UserName = UserName.text;
user.Password = PassWord.text;
user.Add("deviceUniqueIdentifier", SystemInfo.deviceUniqueIdentifier);
//会員登録を行う
user.SignUpAsync ((NCMBException e) => {
if (e != null) {
UnityEngine.Debug.Log ("新規登録に失敗: " + e.ErrorMessage);
} else {
UnityEngine.Debug.Log ("新規登録に成功");
SceneManager.LoadScene("LogOut");
//全会員に対して
//読み込み権限を全開放
NCMBACL acl = new NCMBACL();
acl.PublicReadAccess = true;
user.ACL = acl;
}
});
}
user.ACL = acl;
した後、保存していないように見えます。後、ACLを上書きしているので、ユーザーに対する書き込み権限も必要かと思います。
すみません。以下の様にしても 【StatusCode】:403が出てしまいますね。 【Error】:NCMB.NCMBException: No access with ACL.
//会員登録を行う
user.SignUpAsync ((NCMBException e) => {
if (e != null) {
UnityEngine.Debug.Log ("新規登録に失敗: " + e.ErrorMessage);
} else {
UnityEngine.Debug.Log ("新規登録に成功");
SceneManager.LoadScene("LogOut");
//全会員に対して
//読み込み権限を全開放
NCMBACL acl = new NCMBACL();
acl.PublicReadAccess = true;
acl.SetReadAccess(user.ObjectId, true);
acl.SetWriteAccess(user.ObjectId, true);
user.ACL = acl;
user.SaveAsync();
}
})
原因として考えられるのは、ユーザ登録しただけでは認証を通っていないからだと思われます。
となると、↓のような手順を踏む必要がありそうです。
ご指導ありがとうございました。 以下の形で対応できました。
public void Login ()
{
//NCMBUserのインスタンス作成
NCMBUser user = new NCMBUser ();
// ユーザー名とパスワードでログイン
NCMBUser.LogInAsync (UserName.text, PassWord.text, (NCMBException e) => {
if (e != null) {
UnityEngine.Debug.Log ("ログインに失敗: " + e.ErrorMessage);
} else {
UnityEngine.Debug.Log ("ログインに成功!");
//全会員に対して
//読み込み権限を全開放
NCMBUser currentUser = NCMBUser.CurrentUser;
NCMBACL acl = new NCMBACL();
acl.SetReadAccess(currentUser.ObjectId, true);
acl.SetWriteAccess(currentUser.ObjectId, true);
acl.PublicReadAccess = true;
currentUser.ACL = acl;
currentUser.SaveAsync();
SceneManager.LoadScene("LogOut");
}
});
}
public void Signin ()
{
//NCMBUserのインスタンス作成
NCMBUser user = new NCMBUser ();
//ユーザ名とパスワードの設定
user.UserName = UserName.text;
user.Password = PassWord.text;
//会員登録を行う
user.SignUpAsync ((NCMBException e) => {
if (e != null) {
UnityEngine.Debug.Log ("新規登録に失敗: " + e.ErrorMessage);
} else {
UnityEngine.Debug.Log ("新規登録に成功");
Login();
}
});
}
Unityで新規ユーザー作成時にACLを { "acl" : { "*" : { "read" : true } , "4suSlFT5xx" : { "read" : true , "write" : true } の様な設定にしたいのですがどうしたら良いですか? 読み込み権限を全開放ならできたのですが。