2011-12-08 2 views
0

페이스 북 페이지 용 사용자 정의 탭을 만들려고 노력하고 있으며 페이지의 탭과 직접 링크로 파이어 폭스, 크롬 및 인터넷 익스플로러 8에서 완벽하게 작동하지만 다른 사람들은 데리러 가지 않습니다 그들의 좋아.Facebook 팬 게이트 페이지가 다른 사람을 데리러 오지 않는다.

require 'src/facebook.php'; 

// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
    'appId' => 'xxxxxxxx', 
    'secret' => 'xxxxxx', 
)); 

$user = $facebook->getUser(); 


// alternative to the below but only works on the facebook tab itself 
$signed_request = $_REQUEST["signed_request"]; 
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

if (empty($data["page"]["liked"])) { 
echo "You are not a fan!"; 
} else { 
echo "Welcome back fan!"; 
} 

if ($user) { 
try { 
    $likes = $facebook->api("/me/likes/xxxxxxxxxx"); 
    if(!empty($likes['data'])) 
    { 
     ?> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
     <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#fan').click(function() { 
       $('#fan').animate({ 
        opacity: 0.2, 
        width: 'auto', 
        height: 'auto' 
       }, 1000, function() { 
        // Animation complete. 
        $('#fan').hide('slow'); 
        $('#voucher').show('slow'); 
       }); 
      }); 
     }); 
     </script> 

     <a href="#"><img id="fan" src="//www.website.com/facebook/2011/voucher/fans_image.jpg" alt="10% off" style="border:0;" /></a> 
     <div style="display:none; position:absolute; top:0; left:0;" id="voucher" > 
     <a href="//www.website.com/facebook/2011/voucher/EYE-TEST-DECEMBER-11.pdf" target="_blank"><img src="//www.website.com/facebook/2011/voucher/fb-voucher-dec11.jpg" style="border:0;" alt="10% off" /></a> <br /> 
     <p style="text-align:center"><a href="//www.website.com/facebook/2011/voucher/EYE-TEST-DECEMBER-11.pdf" target="_blank">Click here to download PDF version of the voucher.</a></p> 
     </div> 
     <?php 
    } 
    else 
    { 
     ?> 
     <img style="position:absolute; top:0; left:0; border:0;" id="all" src="//www.website.com/facebook/2011/voucher/fb_like_page.jpg" width="520" height="304" alt="Click LIKE button to get 10% off." /> 
     <?php 
    } 
} catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} 
else { 
    //user isn't logged in so just show un-liked image 
    ?> 
    <img style="position:absolute; top:0; left:0; border:0;" id="all" src="//www.website.com/facebook/2011/voucher/fb_like_page.jpg" width="520" height="304" alt="Click LIKE button to get 10% off." /> 
    <?php 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope' => 'user_likes' 
    )); 
} 

더 많은 정보 이 앱은 샌드 박스 모드에서 하지입니다 :

여기 내 코드입니다.

나는 앱이 내 계정 설정에 나타나서 내게만 효과가 있다고 생각했는데 다른 팬 게이트 탭을 보면 권한 알림 팝업이 없어 ' 그럴 수 있니?

답변

1

맹공격 알림은 내가 한 것처럼 보이는 앱을 명시 적으로 승인하는 사람들을위한 알림입니다. 당신이하지 않았거나 페이지

// alternative to the below but only works on the facebook tab itself 
$signed_request = $_REQUEST["signed_request"]; 
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

    if (empty($data["page"]["liked"])) { 
    echo "You are not a fan!"; 
    } else { 
    echo "Welcome back fan!"; 
    } 

여기에 코드를 좋아하지 않은 사람들에게, 가지고 응용 프로그램을 승인하지 않은 사람들에게 정보를 표시하는 것은 '내가 좋아하는 또는 돈 사람들이 기대하는 것입니다 페이지 탭과 같습니다. 이 탭에있는 응용 프로그램의 권한 부여와는 아무런 관련이 없습니다. 사용자가 자신의 페이지를 좋아할 때만 페이지를 좋아하는 경우에만 사용자 ID 등에 액세스 할 수 없습니다. 그러나 사용자가 페이지를 좋아하는지 테스트하기 위해 코드가 api를 사용하는 것 같습니다. 내 생각 엔 사용자가 해당 페이지 탭에서 애플리케이션을 명시 적으로 승인하지 않았기 때문에 사용자 객체가 실제로 null이라는 것입니다. 말이 돼?

if ($user) { 
$logoutUrl = $facebook->getLogoutUrl(); 
} 
else { 
//user isn't logged in so just show un-liked image 
?> 
<img style="position:absolute; top:0; left:0; border:0;" id="all" src="//www.website.com/facebook/2011/voucher/fb_like_page.jpg" width="520" height="304" alt="Click LIKE button to get 10% off." /> 
<?php 
$loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'user_likes' 
)); 
} 

$ 사용자가 여기에 null이 될 것입니다 그리고 당신은 그들이 가지고있는 정도

+0

을하지 여부 페이지를 좋아하는 사람들을 말하는 것 : 그들은 응용 프로그램에 대한 액세스 권한을 부여했습니다 그래서하지 않는

덕분에 권한이 필요하지 않은 팬 게이트 탭을 사용할 방법이 없습니다 (FBML을 사용하여 가능할 수도 있지만 대신 iframe을 사용하지 않아도됩니다). 그렇다면 내 앱에서'user_likes' 권한을 요구하지 않는 이유는 무엇입니까? – martincarlin87

+0

팬 게이트 페이지를 만들 수 있지만 사용자가 누구인지 모른 채 또는 모르는지 여부를 검사합니다. 두 번째 코드는 사용자가 누구인지 파악하고이를 수행하여 응용 프로그램을 인증해야합니다. $ signed_request = $ _REQUEST [ "signed_request"]; list ($ encoded_sig, $ payload) = 폭발 ('.', $ signed_request, 2); $ data = json_decode (base64_decode (strtr ($ payload, '-_', '+ /')), true); if (empty ($ data [ "page"] [ "liked"])) { echo "당신은 팬이 아닙니다!"; } else { echo "환영합니다 다시 팬!"; } 나는 var_dump ($ data)를 할 것이다; 여기에이 "좋아하는"정보가 있어야합니다. – TommyBs

+0

감사합니다. tommy, 나는 단지'$ _REQUEST'로 시도 할 것입니다 -하지만 탭의 프레임 소스를 보면 여전히 '당신은 부채!' 그래서 이것이 아직 효과가 있을지 확실하지 않습니다. – martincarlin87

관련 문제