Parse platform 好友注销用户解析
我正在将一个应用程序从parse.com迁移到buddy.com。迁移的一个警告是,Parse platform 好友注销用户解析,parse-platform,parse-cloud-code,buddy.com,Parse Platform,Parse Cloud Code,Buddy.com,我正在将一个应用程序从parse.com迁移到buddy.com。迁移的一个警告是,Parse.User.current()在buddy.com上不再可用,您必须从请求本身获取用户和会话令牌: 我正在迁移的应用程序有一个我正在尝试迁移的logoutUser方法: Parse.Cloud.define("logoutUser", function(request, response) { Parse.User.logOut().then( function onSuc
Parse.User.current()
在buddy.com上不再可用,您必须从请求本身获取用户和会话令牌:
我正在迁移的应用程序有一个我正在尝试迁移的logoutUser
方法:
Parse.Cloud.define("logoutUser", function(request, response) {
Parse.User.logOut().then(
function onSuccess(result){
response.success(result);
},
function onError(error) {
response.error(error);
}
)
});
现在我尝试用新的方式来做这件事,但是我收到了一个错误。(注意:这是云代码,不是nodejs环境)
新的实施:
function logoutUser(request, response) {
var user = request.user;
var sessionToken = user.getSessionToken();
Parse.User.logOut({ sessionToken }).then(
function onSuccess(result){
response.success(result);
},
function onError(error) {
response.error(error);
}
)
}
Parse.Cloud.define("logoutUser", function(request, response) {
logoutUser(request, response);
});
关于如何在解析好友云代码时正确注销用户的建议 您可以获取用户的一个或多个会话并将其删除:
var query = new Parse.Query("_Session");
query.descending('createdAt');
query.equalTo('user', {__type:"Pointer", className:"_User", objectId:"idhere"});
query.first({
useMasterKey: true
}).then(function(session) {
var sessions = [];
sessions.push(session);
Parse.Object.destroyAll(sessions);
}, function (err) {
console.log("Internal error " + err);
});
或者,对于更多令牌,您可以使用find而不是first,如:
var query = new Parse.Query("_Session");
query.equalTo('user', {__type:"Pointer", className:"_User", objectId:"idhere"});
query.find({
useMasterKey: true
}).then(function(sessions) {
Parse.Object.destroyAll(sessions);
}, function (err) {
console.log("Internal error " + err);
});
以上内容将主要删除或删除与给定用户相关的令牌。如果您只希望删除用于登录的令牌,而不希望删除用于注册或升级的令牌,则可以在查询中输入:
query.equalTo('createdWith', { action: 'login', authProvider: 'password'});
据我所知,删除用户最后一次用于登录的令牌,他就注销了。要补充上述内容,如果您通过X-Parse-session-token头将用户的会话密钥传递给云代码函数,您可以直接在会话查询中使用填充的request.user对象,而不是用户的ID。不确定您在这里要做什么。因为在任何云代码环境中都没有当前用户,所以他们无法注销。建议获取请求用户和会话令牌的解决方案是在运行任何Parse.Query时传递令牌。您不必在云代码中注销用户,只需在本地设备/浏览器上注销即可。@EReid-hmm好的,也许我误解了。我不熟悉云代码,尤其是这个应用程序。所以我猜这意味着注销在这个应用程序中从来都不起作用,因为注销功能是云代码功能。@EReid当你说在设备上本地注销时,这与解析有什么关系吗?或者仅仅是应用程序本身?我不太清楚
Parse.User
如何在原始Parse.com上工作的细节,因此无法真正评论它是否工作过。通过在本地注销,这完全取决于您使用的SDK。我知道Javascript SDK和Android SDK都有分别让用户注销的功能:Parse.user.logOut()
和ParseUser.logOut()代码>。如果使用Rest api,您只需停止发送X-Parse-Session-Token
头,并删除存储的令牌。是的,我们没有为web客户端使用任何SDK,只需发布并访问buddy.com端点即可。非常感谢,这真的很有帮助。如果你愿意向下移动,我很乐意将你最后的评论标记为答案。
query.equalTo('createdWith', { action: 'login', authProvider: 'password'});