JQuery脚本不会在FB应用程序中为其他参与者触发

时间:2014-06-11 11:43:58

标签: jquery facebook facebook-javascript-sdk facebook-php-sdk

我正在学习创建FB iframe选项卡应用。现在我只想检查观看该页面的用户是否是管理员。所以我在index.php中有这个代码:

<?php
require 'inc/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxx',
));

$user = $facebook->getUser();

$access_token = $facebook->getAccessToken();

if ($user) {
   try {
      $user_friendList = $facebook->api('/me/friends?access_token='.$access_token);
       $user_profile = $facebook->api('/me','GET');

    } catch (FacebookApiException $e) {
      error_log($e);
      $user = null;
    }
  }

$signed_request = $facebook->getSignedRequest();
$page_id = "";
if( $page = $signed_request['page'] ) {
    $page_id = $page['id'];
} else { $page_id = "some id"; }
?>


<!doctype html>
<html>
<head>
<title>php-sdk</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
    var page_id = <?php echo $page_id; ?>;
    var user_id = <?php echo $user; ?>;
    var is_admin = <?php echo $page['admin']; ?>;
</script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="scripts/functionality.js"></script>
...rest of the code...

然后在我的functional.js文件中,我有这个代码,它应该在页面加载时激活一个警告对话框:

$(function(){
    alert("Is admin: "+is_admin);
});

我是测试此应用程序的页面的创建者以及该应用程序的开发人员。当我打开此选项卡时 - 我会看到应该弹出警告对话框。我给了我的两个朋友一个开发人员和一个Tester角色,当他们打开标签时 - 对话框没有为他们弹出。任何想法为什么会发生以及如何解决它?

1 个答案:

答案 0 :(得分:1)

如果用户是管理员,则signed_request返回[admin] => 1,否则返回[admin] =>。没有真或假的价值。您可以将代码修改为:

<script type="text/javascript">
    var page_id = "<?php echo $page_id; ?>";
    var user_id = "<?php echo $user; ?>";
    var is_admin = "<?php echo isset( $page['admin'] ) && $page['admin'] == 1 ? true : false; ?>";
</script>