1

Я пытаюсь опубликовать checkin, используя API-интерфейс Facebook Graph. Я прошел через Facebook API documentation (checkins), а также получил разрешение publish_checkins. Однако моя регистрация не публикуется. Могу ли я узнать, что-то не так, или я что-то пропустил? Спасибо за ваше время :)Facebook - Публикация проверок с использованием SDK SDK/JavaScript SDK SDK/JavaScript

fbmain.php

$user = $facebook->getUser(); 
$access_token = $facebook->getAccessToken(); 

// Session based API call 
if ($user) { 
    try { 
      $me = $facebook->api('/me'); 
      if($me) 
      { 
       $_SESSION['fbID'] = $me['id']; 
       $uid = $me['id']; 
      } 
     } catch (FacebookApiException $e) { 
      error_log($e); 
     } 
} 
else { 
    echo "<script type='text/javascript'>top.location.href='$loginUrl';</script>"; 
    exit; 
} 

$loginUrl = $facebook->getLoginUrl(
     array(
      'redirect_uri' => $redirect_url, 
      'scope' => status_update, publish_stream, publish_checkins, 
       user_checkins, user_location, user_status' 
      ) 
); 

main.php - Использование PHP SDK (Wrong SDK, используемый в этом примере, следует использовать JavaScript SDK вместо)

<?php 
    include_once "fbmain.php"; 

    if (!isset($_POST['latitude']) && !isset($_POST['longitude'])) 
    { 
?> 
<html> 
    <head> 
     //ajax POST of latitude and longitude 
    </head> 

    <body> 
     <input type="button" value="Check In!" onclick="checkin();"/></span> 
    </body> 
</html> 
<?php 
} 
else 
{ 
?> 
<script type="text/javascript"> 
    function checkin() 
    { 
     try 
     { 
      $tryCatch = $facebook->api('/'.$uid.'/checkins', 'POST', array(
       'access_token' => $facebook->getAccessToken(), 
       'place' => '165122993538708', 
       'message' =>'MESSAGE_HERE', 
       'coordinates' => json_encode(array(
        'latitude' => '1.3019399200902', 
        'longitude' => '103.84067653695' 
       )) 
      )); 
     } 
     catch(FacebookApiException $e) 
     { 
      $tryCatch=$e->getMessage(); 
     } 
     return $tryCatch; 
    } 
</script> 
<?php 
} 
?> 

Вопрос решен - Принять во внимание при публикации регистрации

  • Удостоверяются, что publish_checkins разрешено.
  • Должен использовать json_encode() для кодирования параметра coordinates для PHP SDK.
  • place и coordinates параметры являются обязательными.
  • Повторная аутентификация требуется, если вы только что добавили publish_checkins разрешение на существующий список разрешенных разрешений.
+0

Какую ошибку вы получаете? Получаете ли вы почтовый идентификатор? если это так, то появляется в журнале активности пользователя? – Igy

+0

@Igy К сожалению, я не получаю никаких ошибок от php_error.log. Я добавил try catch внутри функции, но я также не получаю исключения. Однако что-то странное привлекло мое внимание, когда я сделал «alert» ( getAccessToken()?>); это вызвало «неопределенное». Могу ли я узнать, как проверить идентификатор сообщения и какой журнал активности пользователя? Я только начал разрабатывать приложение Facebook месяц назад, был бы очень признателен, если бы вы руководили мной. Спасибо :) – Zany

+0

Когда вы совершаете этот вызов API, должен быть обратный вызов с ошибкой или идентификатор сообщения созданного вами нового сообщения. – Igy

ответ

1

По-видимому, конфигурация и функция проверки PHP, которые я опубликовал в вопросе, верны. Тем не менее, я должен использовать JavaScript SDK вместо PHP SDK для моего случая, как указал Nehal. Для будущих ссылок ...

Использование JavaScript SDK

function checkin() 
{ 
    FB.api('/me/checkins', 'post', 
    { message: 'MESSAGE_HERE', 
     place: 165122993538708, 
     coordinates: { 
      'latitude': 1.3019399200902, 
      'longitude': 103.84067653695 
     } 
    }, 
     function (response) { 
      alert("Checked in!"); 
     } 
    ); 
} 
+1

Обратите внимание, что согласно недавним [документам в Facebook] (https://developers.facebook.com/docs/reference/api/checkin/) _ «Публикация объекта Checkin устарела в пользу создания Почты с местоположением прилагается. "_ – JimmyBlu

0

Вам также необходимо изучить PHP и переменную область охвата.

$facebook = new Facebook(array(
      'appId' => FB_API_KEY, 
      'secret' => FB_SECRET_KEY, 
      'cookie' => true, 
     )); 
$loginUrl = $facebook->getLoginUrl(
     array('scope' => 'status_update,publish_stream,publish_checkins,user_checkins,user_location,user_status,user_checkins') 
); 

// Session based API call 
if ($user) { 
    try { 
      $me = $facebook->api('/me'); 
      if($me) 
      { 
       $_SESSION['fbID'] = $me['id'];     
      } 
     } catch (FacebookApiException $e) { 
      error_log($e); 
     } 
} 
else { 
    echo "<script type='text/javascript'>top.location.href='$loginUrl';</script>"; 
    exit; 
} 

function checkin($fb) 
{ 
    try 
    { 
     $tryCatch = $fb->api('/'.$_SESSION['fbID'].'/checkins', 'POST', array(
      'access_token' => $fb->getAccessToken(), //corrected 
      'place' => '165122993538708', 
      'message' =>'I went to placename today', 
      'coordinates' => json_encode(array(
       'latitude' => '1.3019399200902', 
       'longitude' => '103.84067653695' 
      )) 
     )); 
    } 
    catch(FacebookApiException $e) 
    { 
     $tryCatch=$e->getMessage(); 
    } 
    return $tryCatch; 
} 

checkin($facebook); //calling the function and passing facebook object to function 
+0

Я последовал за ним и сделал « 'вместо вызова функции, и он вернул мне исключение "класс Facebook не может быть преобразован в строку". – Zany

+1

Это функция PHP, вы не можете использовать ее в вызове javascript.Чтобы использовать API facebook для javascript, попробуйте [Facebook Javascript SDK] (https://developers.facebook.com/docs/reference/javascript/) – Nehal

+0

Ох! Какая серьезная ошибка. Спасибо, что указали. – Zany