Facebook Graph API, расширенные разрешения - PullRequest
1 голос
/ 24 июня 2010

Я пытаюсь использовать Facebook Graph API, чтобы обновить сообщение пользователя.

Я получаю следующую ошибку при использовании, я думаю, что новый граф 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, поэтому я удалил эту строку в своем коде.

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 июня 2010

Вы включаете новейший 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 */
) );

См. соответствующую документацию для получения дополнительной информации о параметрах.

EDIT

Ответ на ваши вопросы

1] При использовании нового SDK - все по-другому.Вы должны создать объект, подобный этому

$facebook   = new Facebook(array(
    'appId'  => 'FB_APP_ID'
  , 'secret' => 'FB_APP_SECRET'
  , 'cookie' => true
));

2] Исправлен мой код выше

3] http://developers.facebook.com/docs/reference/api/

0 голосов
/ 24 июня 2010

В Graph API, когда пользователь разрешает ваше приложение, вы должны сказать, что «мне нужно status_update».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...