1

Facebook Graph API를 사용하여 체크인을 게시하려고합니다. Facebook API documentation (checkins)을 방문했으며 publish_checkins 권한이 있습니다. 그러나 내 체크인은 게시되지 않습니다. 내가 틀린 것이 있는지 또는 다른 것을 놓치고 있는지 알고 싶습니까? :)Facebook - PHP SDK/JavaScript SDK를 사용하여 체크인 게시

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 (이 예에서 사용 된 잘못된 SDK 대신 자바 스크립트 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 허가가 있는지 확인하십시오.
  • PHP SDK의 coordinates 매개 변수를 인코딩하려면 json_encode()을 사용해야합니다.
  • placecoordinates 매개 변수는 필수입니다.
  • 허용 된 권한 목록에 publish_checkins 권한을 추가 한 경우 재 인증이 필요합니다.
+0

당신이지고 어떤 오류를 사용하십니까? 다시 게시판 ID를 받고 있습니까? 그렇다면 사용자의 활동 로그에 나타나는 것입니까? – Igy

+0

@Igy 불행히도 php_error.log에서 오류가 발생하지 않습니다. 함수 안에 try catch를 추가했지만 아무런 예외도 얻지 못했습니다. 그러나 이상한 무언가가 내주의를 끌었습니다. 'alert ( getAccessToken()?>);' 그것은 "정의되지 않은"메시지를 표시합니다. 게시물 ID를 다시 확인하고 사용자의 활동 로그를 확인하려면 어떻게해야합니까? 한 달 전에 페이스 북 응용 프로그램을 개발하기 시작했습니다. 정말로 안내해 주시면 감사하겠습니다. 고맙습니다. :) – Zany

+0

API 호출을 만들면 오류가있는 콜백 또는 생성 한 새 게시물의 게시 ID가 있어야합니다. – Igy

답변

1

분명히 질문에 게시 된 구성 및 PHP 체크인 기능이 정확합니다. 그러나 Nehal이 지적한 PHP SDK 대신 JavaScript SDK를 사용해야합니다. 향후 참조를 위해 ...

자바 스크립트 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 docs] (https://developers.facebook.com/docs/reference/api/checkin/) _ "게시 위치에 Postin을 만들기 위해 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

내가 따라 와서 ' "대신 함수를 호출하면"class Facebook 클래스를 문자열로 변환 할 수 없습니다 "라는 예외가 리턴되었습니다. – Zany

+1

PHP 함수이므로 자바 스크립트 호출에서는 사용할 수 없습니다.자바 스크립트에 페이스 북 API를 사용하려면 [Facebook Javascript SDK] (https://developers.facebook.com/docs/reference/javascript/) – Nehal

+0

오! 얼마나 중대한 실수입니까? -_- 지적 해 주셔서 감사합니다. – Zany

관련 문제