【问题标题】:Having trouble parsing a response from Facebook graph无法解析来自 Facebook 图表的响应
【发布时间】:2014-08-25 11:10:53
【问题描述】:

我正在尝试确定是否已为用户授予“publish_action”权限(使用 php)。

我可以查询图表了,我只是停留在解析响应以获取 publish_actions = 'granted'。

查询是:

$user_permissions = "https://graph.facebook.com/me/permissions?access_token=" .$access_token;

$permissions = json_decode(file_get_contents($user_permissions));

如果我打印响应

print_r($permissions);

我明白了……

stdClass 对象 ( [data] => 数组 ( [0] => stdClass 对象 ( [权限] => 已安装 [状态] => 授予) [1] => stdClass 对象 ( [permission] => public_profile [status] =>granted ) [2] => stdClass 对象 ( [permission] => publish_actions [status] => grant ) ) )

可捕获的致命错误:stdClass 类的对象无法转换 串起来

基本上我只是希望能够在 php 中分配一个变量 if publish_actions[status] == 'granted'

对此的任何帮助将不胜感激。

更新

尝试以下 Sahil 的建议:

$user_permissions = "https://graph.facebook.com/me/permissions?access_token=" .$access_token;

$permissions = json_decode(file_get_contents($user_permissions, TRUE));

$hasPublishPerm = false;
print_r($permissions['data']);
print_r($permissions);
foreach($permissions['data'] as $permission){
   if($permission['permission']=="publish_actions" && 
      $permission['status']=="granted"){
        $hasPublishPerm = true;
        break;
   }
}

if($hasPublishPerm){
   echo "User has granted the publish permission";
}
else{
   echo "User has NOT granted the publish permission";
}

我收到此错误:

致命错误:不能在...中使用 stdClass 类型的对象作为数组

【问题讨论】:

    标签: php json facebook facebook-graph-api graph


    【解决方案1】:

    就这么做-

    $hasPublishPerm = false;
    foreach($permissions['data'] as $permission){
       if($permission['permission']=="publish_actions" && 
          $permission['status']=="grantedd"){
            $hasPublishPerm = true;
            break;
       }
    }
    
    if($hasPublishPerm){
       echo "User has granted the publish permission";
    }
    else{
       echo "User has NOT granted the publish permission";
    }
    

    【讨论】:

    • 感谢您的回复。看起来它应该可以工作,但我收到一个错误:为 foreach() 提供的参数无效
    • foreach 之前执行print_r($user_permissions['data'])print_r($user_permissions) 并告诉我结果
    • 对不起,我的错误......这是我正在使用的代码: $user_permissions = "graph.facebook.com/me/permissions?access_token=" .$access_token; $permissions = json_decode(file_get_contents($user_permissions)); print_r($permissions);我得到... stdClass Object ( [data] => Array ( [0] => stdClass Object ( [permission] => installed [status] =>granted ) [1] => stdClass Object ( [permission] => public_profile [status] =>granted) [2] => stdClass Object ([permission] => publish_actions [status] =>granted)) ) 可捕获的致命错误:stdClass 类的对象无法转换为字符串
    • 您使用的是不同的变量。您在 for 循环或其他 .它应该是foreach($permissions['data'] as $permission){ 而不是foreach($user_permissions['data'] as $permission){。如果这是正确的,请给我print_r 的回复,我将如何处理您打印的代码,我需要回复。
    • 我无法理解为什么你甚至无法将我的代码集成到你的代码中——这么简单的事情。这样你会很挣扎,请聘请技术人员。顺便说一句,我已经编辑了答案请检查
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多