2014-03-02 2 views

답변

6

:

구문 분석 클라우드에
var pusher = new Pusher('your-app-key', {authTransport: 'parse'}); 

Pusher.authorizers.parse = function (socketId, callback) { 
    var pusherData = { 
     socket_id: socketId, 
     channel_name: this.channel.name 
    }; 
    Parse.Cloud.run('authorizePusherChannel', pusherData, { 
     success: function (result) { 
      callback(false, JSON.parse(result)); 
     }, 
     error: function (error) { 
      callback(true, error); 
     } 
    }); 
}; 

:

Parse.Cloud.define('authorizePusherChannel', function (request, response) { 
    if (!request.user) { response.error('User should be autenticated.'); } 
    var pusherAppKey = 'your-pusher-app-key'; 
    var pusherAppSecret = 'your-pusher-app-secret'; 
    var stringToSign = request.params.socket_id + ':' + request.params.channel_name; 
    var authToken = pusherAppKey + ':' + crypto.createHmac('sha256', pusherAppSecret).update(stringToSign). digest('hex');  
    response.success(JSON.stringify({auth:authToken})); 
}); 
+1

나는'parse' 하나를 사용할 수있는 권한 부여를 설정 누락 된 부분이 있다고 생각. – leggetter

+1

@leggetter 당신 말이 맞아요! 대답에 추가했습니다. 감사! –

+0

이것은 나를 위해 작동하지 않습니다. 엔드 포인트가 호출됩니다 (구문 분석 콘솔 디버깅에 의해 확인 됨). 응답은 유효한 auth keyed json으로 보입니다. 그러나 푸시 콘솔에서 오류가 발생합니다. "개인 채팅에 가입하는 데 필요한 인증 정보" – Kevin

0
Pusher.authorizers.parse = function (socketId, callback) { 
    var pusherData = { 
     socket_id: socketId, 
     channel_name: this.channel.name 
    }; 
    Parse.Cloud.run('authorizePusherChannel', pusherData, { 
     success: function (result) { 
      callback(false, JSON.parse(result)); 
     }, 
     error: function (error) { 
      callback(true, error); 
+0

여기서 중요한 점은 무엇입니까? –