Я пытаюсь написать скрипт, который позволяет пользователям отмечать себя на фотографиях, отображаемых на моем сайте.
После того, как пользователь выбрал людей, которых нужно пометить, фотография загружается на фан-страницу Facebook моего сайта, но Facebook не позволяет моему приложению отмечать фотографию с зарегистрированными в данный момент пользователями profile_id или фотографиями любого из их пользователей. друзья.
Все работает отлично, кроме добавления тегов. Я получаю ошибку:
Неустранимая ошибка: Uncaught OAuthException: Произошла неизвестная ошибка. добавляется в /home/public_html/include/api/facebook.3.0.1/base_facebook.php в строку 1039
Вот код на данный момент:
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . "/include/api/facebook.3.0.1/facebook.php");
//Name of album you want to create
$album_name = "December 4, 2011";
// Create our application instance
// (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'APP_ID_INSERT_HERE',
'secret' => 'APP_SECRET_INSERT_HERE',
));
$facebook->setFileUploadSupport(true);
// Get User ID
$user = $facebook->getUser();
// We may or may not have this data based
// on whether the user is logged in.
// If we have a $user id here, it means we know
// the user is logged into
// Facebook, but we don’t know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
// Get access token for Facebook Page
$page_id = '170367249680012';
$page_info = $facebook->api("/$page_id?fields=access_token");
if (!empty($page_info['access_token'])) {
$param = array(
'method' => 'fql.query',
'query' => 'SELECT object_id FROM album WHERE owner="FACEBOOK_PAGE_ID_INSERT_HERE" AND name="' . $album_name . '"'
);
//Check if album exists
$album = $facebook->api($param);
if (isset($album[0]['object_id'])) {
// If album exists store id in the variable $album_uid
$album_uid = $album[0]['object_id'];
} else {
// ELSE Create album
$album_details = array(
'access_token' => $page_info['access_token'],
'message' => 'Album desc',
'name' => $album_name
);
$create_album = $facebook->api('/me/albums', 'post', $album_details);
//Get album ID of the album you've just created
$album_uid = $create_album['id'];
}
//Photo Details
$file = 'test.jpg'; //Example image file
$photo_details['image'] = '@' . realpath($file);
//Upload a photo to album
$args = array(
'access_token' => $page_info['access_token'],
'image' => '@' . realpath($file),
'message' => "test"
);
$upload_photo = $facebook->api('/' . $album_uid . '/photos', 'post', $args);
//Get id of photo uploaded
$photo_id = $upload_photo['id'];
echo "<br/>" . $photo_id . "<br/>";
//ADD TAGS
$argstag = array('to' => $user);
$argstag['x'] = 40;
$argstag['y'] = 40;
$datatag = $facebook->api('/' . $photo_id . '/tags', 'post', $argstag);
}
}
// Login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(array('scope' => 'status_update,publish_stream,user_photos,offline_access,manage_pages'));
}
?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>php-sdk</title>
<style>
body {
font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
}
h1 a {
text-decoration: none;
color: #3b5998;
}
h1 a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<h1>php-sdk</h1>
<?php if ($user): ?>
<a href="<?php echo $logoutUrl; ?>">Logout</a>
<?php else: ?>
<div>
Login using OAuth 2.0 handled by the PHP SDK:
<a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
</div>
<?php endif ?>
</body>
</html>
Интересно, если я использую тот же скрипт для загрузки изображения в профиль пользователя и отмечу изображение, на котором оно работает!
для тех из вас, кто хочет это сделать, удалите следующую строку кода, она появляется дважды
'access_token' => $ page_info ['access_token'],
и изменить
$ upload_photo = $ facebook-> api ('/'. $ album_uid. '/ photos', 'post', $ args);
Для
$ upload_photo = $ facebook-> api ('/ me / photos', 'POST', $ args);
Я искал все выше и ниже, чтобы увидеть, есть ли ограничение, не позволяющее API разрешать пользователям отмечать себя или друзей на фан-страницах, но я ничего не могу найти. Единственное, что я смог найти, это:
http://forum.developers.facebook.net/viewtopic.php?id=101485
Так что я не уверен, является ли это ошибкой, но у меня, похоже, такая же проблема, как и у них. Он был зарегистрирован как ошибка более 6 месяцев назад, и, похоже, прогресса не было.
Кто-нибудь знает обходной путь для этой проблемы? Я не хочу загружать изображение в профиль пользователя и отмечать его.