我正在尝试使用facebook Graph API来更新用户staus消息。
我在使用它时遇到以下错误,我认为新的图形sdk没有被正确引用?
Notice: Undefined property: Facebook::$api_client in /users/home/aafhe7vh/web/public/update.php on line 9
Fatal error: Call to a member function users_hasAppPermission() on a non-object in /users/home/aafhe7vh/web/public/update.php on line 9
这是我使用的文件http://github.com/facebook/php-sdk/blob/master/src/facebook.php
以下是我的update.php的内容:
# <?php
include_once ('facebook.php');
$api_key = '@@@@@@@@@@@@@@@@@@@2';
$secret = '$$$$$$$$$$$$$$$$$$$$44';
global $facebook;
$facebook = new Facebook($api_key, $secret);
# include_once("config.php");
# if (!$facebook->api_client->users_hasAppPermission("status_update")){
# echo '<fb:prompt-permission perms="status_update" next_fbjs="greet()">Let us update your status </fb:prompt-permission>';
# $visibility = "none";
# }
# else
# $visibility = "block";
#
# if(isset($_POST['hello']))
# {
# $facebook->api_client->users_setStatus($_POST['hello']);
# echo "<p>Your status has been updated</p>";
# }
# ?>
# <div id="statusdiv" style="display:<?=$visibility;?>;">
# <form method="POST">
# Please update your status:<br/>
# <input type="text" name="status" /> <br/>
# <input type="submit" value="change status" />
# </form>
# </div>
#
# <script>
#
function greet()
# {
# var session = "<?=$facebook->api_client->session_key;?>";
# document.getElementById("statusdiv").setStyle("display","block");
# new Dialog().showMessage("Info","Thank you for granting us this permission! ");
# }
</script>
我使用了上面的代码,http://fbcookbook.ofhas.in/tag/extended-permission/
我不确定config.php应该包含什么,所以我在代码中删除了该行。
感谢。
答案 0 :(得分:1)
您包含最新的PHP SDK,但您的代码是为旧SDK编写的。因此,要么降级到以前版本的SDK,要么更改您的实施。
// Old SDK
$facebook->api_client->users_setStatus($_POST['hello']);
// New SDK
$facebook->api ( array(
'method' => 'users.setStatus'
, 'status' => $_POST['hello']
, 'uid' => /* user's facebook id */
) );
有关参数的更多详细信息,请参阅corresponding documentation。
对您的问题的回复
1]使用新SDK时 - 一切都不同。你必须像这样创建对象
$facebook = new Facebook(array(
'appId' => 'FB_APP_ID'
, 'secret' => 'FB_APP_SECRET'
, 'cookie' => true
));
2]修正了上面的代码
答案 1 :(得分:-1)
使用Graph API,当用户允许您的应用程序时,您必须说“我需要status_update”。