图形api stream_post不返回false

时间:2012-07-21 00:33:51

标签: php facebook facebook-graph-api

foreach($ret_obj as $person)
{        
    $a = $person['uid'];
    echo $a.'<br />';
    $page_feed = $facebook->api(
        '/'.$a.'/feed',
        'POST',
        array(
            'message' => 'Message',
            'name' => 'Name',
            'description' => 'description',
            'link' => ''.FB_BASE_URL.'',
            'picture' => 'http://link.edu/pic.jpg',
            'access_token' => ''.$fbme[access_token].'' 
        )
    );

    //if $page_feed is defined it prints yes if not defined prints no
    if($page_feed){echo 'yes<br />';}
    elseif(!$page_feed[id]){echo 'no<br />';} 
}

有人甚至不向他们的朋友打开他们的墙。然后我想检查$page_feed是真还是假。我试着在最后两行做这个。我试过isset()。无论我做了什么,我都无法打印no

发布时,$page_feed变量会返回如下内容:533444332_475819545445666 并尝试下面的代码,但它会再次给我一个空白页。

if($page_feed){echo strstr($page_feed[id],'_').'<br />';}
elseif(strstr($page_feed[id],'_')){echo 'no<br />';}

1 个答案:

答案 0 :(得分:0)

如果您当前的用户不允许在其他人的墙上发帖,那么尝试这样做会导致异常 - 所以您必须使用

try { … } catch(FacebookApiException $e) { … }

正确地对此作出反应,否则你的脚本将因未捕获的异常而死亡。

  

有人甚至不向他们的朋友打开他们的墙。

如果它只是您尝试发布的当前用户的朋友,那么如果他们允许,可能最好先检查一下。

您可以使用FQL执行此操作 - user表中有一个名为can_post的字段 - “查看者是否可以发布到用户的墙上。” < / p>

SELECT uid FROM user WHERE uid IN
  (SELECT uid1 FROM friend WHERE uid2 = me())
  AND can_post

此查询只会为您提供允许您当前用户发布到他们墙上的朋友的ID。将其与您尝试发布的用户ID列表相交 - 并且您不必在发布必须失败的过程中进行无效的尝试,这毕竟仍然会花费HTTP请求的时间。

(当然,您应该捕获可能的API异常,因为总会有其他事情可能出错,并且您不希望您的脚本在这些情况下死亡。)