Не могу пометить пользователей на странице Facebook API PHP SDK Graph - PullRequest
3 голосов
/ 08 декабря 2011

Я пытаюсь написать скрипт, который позволяет пользователям отмечать себя на фотографиях, отображаемых на моем сайте.

После того, как пользователь выбрал людей, которых нужно пометить, фотография загружается на фан-страницу 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 месяцев назад, и, похоже, прогресса не было.

Кто-нибудь знает обходной путь для этой проблемы? Я не хочу загружать изображение в профиль пользователя и отмечать его.

1 Ответ

1 голос
/ 22 августа 2012

Проверьте настройки вашей страницы. Есть настройка, которая позволяет фанатам отмечать себя на фотографиях. Убедитесь, что он включен и попробуйте снова. Найдите значение Tagging Ability в Manage Permissions.

.
...