有没有办法强制parse.com单设备login?
我正在开发一个应用程序,我需要非常节俭的API请求,要求越less越好。 问题是每个用户都有设置和消息,我想避免每次唤醒时都可能发生的变化。 我不能依靠每个用户都能启用推送通知。
我的做法是强制执行一个用户只能使用一个设备login的折衷办法。 如果他们尝试使用其他设备(通过Facebook)login,他们会收到错误消息,他们可以select取消login或继续远程登出其他设备。
这可能吗?
我find了解决这个问题的办法。
- 查询login后的会话数
- 如果数字大于1,请问用户做什么
-
- 注销其他设备(并继续) – >调用“deleteAllOtherSessions”
-
- 取消login(并返回login屏幕) – >调用“deleteLastSession”
云代码:
Parse.Cloud.define("getSessionCount", function(request, response) { if (request.user == null) { reportError("findSessions", "userCheck", 0); response.error("invalid user"); return } var query = new Parse.Query(Parse.Session); query.find({ success: function(results) { response.success(results.length); }, error: function(error) { response.error(error); } }); }); Parse.Cloud.define("deleteAllOtherSessions", function(request, response) { if (request.user == null) { reportError("deleteAllOtherSessions", "userCheck", 0); response.error("invalid user"); return } var sessionToken = request.params.sessionToken; var query = new Parse.Query(Parse.Session); // this query will find only sessions owned by the user since // we are not using the master key query.find().then(function(results) { var promises = []; _.each(results, function (result) { if(result.get("sessionToken") != sessionToken) { promises.push(result.destroy()); } }); return Parse.Promise.when(promises); }).then(function() { response.success(true); }, function(error) { response.error(error) }); }); Parse.Cloud.define("deleteLastSession", function(request, response) { if (request.user == null) { reportError("deleteLastSession", "userCheck", 0); response.error("invalid user"); return } var sessionToken = request.params.sessionToken; var query = new Parse.Query(Parse.Session); query.descending("createdAt"); // this query will find only sessions owned by the user since // we are not using the master key query.find().then(function(results) { var promises = []; console.log(results); promises.push(results[0].destroy()); return Parse.Promise.when(promises); }).then(function() { response.success(true); }, function(error) { response.error(error) }); });
希望能帮助别人。