2017-02-06 2 views
0

Я переношу приложение с parse.com на buddy.com. Одним из предостережений миграции не был, что Parse.User.current() больше недоступен на buddy.com, вместо этого вы должны получить пользователь и сеанс фишку из самого запроса: https://github.com/ParsePlatform/Parse-Server/wiki/Compatibility-with-Hosted-Parse#no-current-userParse On Buddy Выход из системы Пользователь

Приложение Я проникаю имеет метод 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 среда)

{ 
    "code":"500", 
    "error":"Error: There is no current user user on a node.js server environment." 
} 

Новая реализация:

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); 
}); 

Предложения о том, как правильно выйти из пользователей в синтаксический анализ на Бадди облака кода?

+0

Не знаете, что вы пытаетесь сделать здесь. Поскольку в любой среде облачного кода нет текущего пользователя, они не могут быть выведены из системы. Решение, предлагающее получить запрашивающий токен пользователя и сеанса, заключается в передаче токена при запуске любого Parse.Query. Вам не нужно выходить из системы в облачном коде, только на локальном устройстве/браузере. – EReid

+0

@EReid hmm ok, может быть, тогда я недопонимаю. Я новичок в Cloud Code и специально для этого приложения. Поэтому я предполагаю, что это означает, что выход из системы никогда не работал в этом приложении, так как функция выхода была функцией Cloud Code. –

+0

@EReid Когда вы говорите, что локально выходите на устройство, это так или иначе связано с синтаксическим разбором? Или просто для самого приложения? –

ответ

0

Вы могли бы принести сессию или сессии пользователя и удалить его/их:

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); 
    }); 

ИЛИ для более лексем вы можете использовать поиск вместо первого, как:

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'}); 

Насколько я знаю, при удалении пользователя последний используемый для входа маркера, то он выведен из системы.

0

Чтобы добавить к вышесказанному, если вы передадите ключ сеанса пользователя в функцию облачного кода с помощью заголовка X-Parse-Session-Token, вы можете напрямую использовать заполненный объект request.user в запросе сеанса, вместо этого идентификатора пользователя.

Смежные вопросы