【发布时间】:2012-06-19 20:06:06
【问题描述】:
我正在尝试使用 Facebook Graph API 发布签到。我已经通过Facebook API documentation (checkins) 并且还拥有publish_checkins 权限。但是,我的签到没有发布。我可以知道有什么问题还是我错过了什么?谢谢你的时间:)
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,应该使用 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()对PHP SDK 的coordinates参数进行编码。 -
place和coordinates参数是强制性的。 - 如果您刚刚将
publish_checkins权限添加到现有的允许权限列表中,则需要重新进行身份验证。
【问题讨论】:
-
您遇到什么错误?回帖ID了吗?如果有,是否会出现在用户的活动日志中?
-
@Igy 不幸的是,我没有从 php_error.log 中得到任何错误。我在函数中添加了 try catch,但我也没有遇到任何异常。然而,当我执行“alert($facebook->getAccessToken()?>);”时,一些奇怪的事情引起了我的注意它提示“未定义”。我可以知道如何检查帖子 ID 以及用户的活动日志是什么?一个月前我刚刚开始开发 Facebook 应用程序,如果您能指导我,我将不胜感激。谢谢你:)
-
当您进行 API 调用时,应该有一个带有错误或您创建的新帖子的帖子 ID 的回调
-
你是否全球化了 $uid 和 $facebook 以便在 checkin() 函数中使用?
-
@Igy 我提到了facebook-api-callback-function 并在 try 和 catch 子句的末尾都做了一个 alert () 但没有从他们那里得到任何提示。此外,当我进行 API 调用时,函数中的任何 alert() 都将不起作用。
标签: facebook facebook-javascript-sdk facebook-php-sdk checkin