2012-09-18 3 views
0

페이지 탭 내에서 실행되는 페이스 북 앱을 개발해야합니다. 이 페이지를 좋아 한 사용자 만 앱을 사용할 수 있어야 (따라서 권한을 부여해야합니다). 주어진 페이스 북의 사용자가 페이지를 좋아하거나하지 않은 경우 알고는 매우 사소한입니다 signed_request 매개 변수를 사용페이스 북 탭 앱 승인

: 이것은 잘 작동하고

var isFan = false; 
if (req.facebook.signedRequest && req.facebook.signedRequest.page){ 
    isFan = req.facebook.signedRequest.page.liked; 
} 

. 당신이 볼 수 있듯이 응용 프로그램이 성공적으로 권한이 부여 된 경우

$('#authApp').click(function(){ 

       FB.login(function(response) { 

        if (response.authResponse) { 
         window.location = window.location; 
        } 
       }, {scope: 'user_likes,user_photos'}); 
       return false; 
      }); 

, 나는 페이지를 다시로드 : 사용자가 페이지를 좋아되면 는 지금, 나는 권한을 부여하는 '시작이 응용 프로그램'버튼을 보여줍니다.

그러나 페이지가 다시로드 될 때 signed_request.page 매개 변수가 누락되었습니다. 비 팬을위한 html 마크 업이 나타납니다.

{

알고리즘 : 'HMAC-SHA256'코드 : '...', issued_at :

이것은 signed_request이 응용 프로그램을 승인 한 후 다시로드 할 때와 같은 모습입니다 1348003786 , user_id : '100 ...'}

그 후에 바로 페이지를 새로 고치면. 모든 것이 잘으로, 페이지에 정보를 다시가 :

{알고리즘 'HMAC-SHA256는'만료 : 1348009200, issued_at : 1348004248,의 oauth_token : 'AA ..', 페이지 : {ID : ' 490 ... ', 좋아요 : true, 관리자 : true}, 사용자 : {country :'ec ', 로캘 :'en_US ', 나이 : { min : 21}, user_id :'100 ... '}

이것이 어떻게 작동할까요?

이 문제를 해결하기위한 권장 방법은 무엇입니까?

감사합니다.

답변

1

그러나 페이지가 다시로드되면 signed_request.page 매개 변수가 누락됩니다. 그것은 단지 (iframe을 제출 방법 = 게시물 형태를 통해)은 iframe에 초기로드 앱에 전달 있기 때문에

물론 그것은이다. 언제든지 거기에서 액세스 할 수 있도록

  • 는 자신의 세션에 넣어 : 당신이 페이지를 다시로드 한 후 포함 된 데이터를 갖고 싶어

    , 당신은 두 가지 옵션이 있습니다.

  • iframe 내부에서 앱을 다시로드하지 않고 전체 Facebook 페이지를 다시로드하지 마세요 (JavaScript, top.location). 그런 다음 앱이 iframe에 다시로드되고 두 번째로 signed_request가 게시됩니다.