2017-02-06 8 views
0

parse.com에서 buddy.com으로 응용 프로그램을 마이그레이션하고 있습니다. 마이그레이션의주의 사항 중 하나는 Parse.User.current() 대신 당신이 요청 자체에서 사용자 및 세션 토큰을 얻을 수 있고, buddy.com에 더 이상 사용할 수 없습니다 것을 : https://github.com/ParsePlatform/Parse-Server/wiki/Compatibility-with-Hosted-Parse#no-current-user버디 로그 아웃 사용자에 대한 구문 분석

내가 마이그레이션 오전 응용 프로그램이 logoutUser 방법이 있습니다를 그 I 마이그레이션을 시도하고있다 :

Parse.Cloud.define("logoutUser", function(request, response) { 
    Parse.User.logOut().then(
     function onSuccess(result){ 
      response.success(result); 
     }, 
     function onError(error) { 
      response.error(error); 
     } 
    ) 
}); 

가 지금은 새로운 스타일의에서이 작업을 수행하려고 시도하고 있지만 오류가 발생하고있다. 제대로 버디 구름 코드를 구문 분석에서 사용자를 로그 아웃하는 방법에 대한

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

제안 :

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

새로운 구현 (참고 :이 클라우드 코드는 nodejs 환경 아님)?

+0

여기서 무엇을 하려는지 확실하지 않습니다. 클라우드 코드 환경에는 현재 사용자가 없으므로 로그 아웃 할 수 없습니다. 요청한 사용자 및 세션 토큰을 얻으려면 모든 Parse.Query를 실행할 때 토큰을 전달하는 것이 좋습니다. 클라우드 코드에서 로컬 장치/브라우저에서만 사용자를 로그 아웃 할 필요는 없습니다. – EReid

+0

@ 어쩌면 나는 오해하고있다. 저는 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 헤더를 통해 사용자의 세션 키를 Cloud Code 함수에 전달하는 대신 세션 쿼리에서 채워진 request.user 개체를 직접 사용할 수 있습니다 사용자 ID의