【问题标题】:Can't tag photo with Facebook API无法使用 Facebook API 标记照片
【发布时间】:2012-07-19 04:33:32
【问题描述】:

我尝试使用 Facebook API 中的标记功能,但它不起作用。

这是权限代码:

$facebook->getLoginUrl(
    array(
        'canvas' => 1,
        'fbconnect' => 0,
        'req_perms' => 'user_photos, friends_photos, publish_stream,
                        offline_access, user_likes, user_photo_video_tags',
        'next' => $appCanvasPage.'index.php',
        'cancel_url' => $appCanvasPage
    )
);

这是我尝试的第一种方法:

$photoId = $userid."_".$upload_photo['id'];
$post_url = "https://graph.facebook.com/"
            .$$photoId . "/tags/" . $friendid
            . "?access_token=". $access_token
            . "&x=" . $x_coordinate 
            . "&y=" . $y_coordinate 
            . "&method=POST";
file_get_contents($post_url);

这会返回一个错误:

"message": "Unsupported post request.",
"type": "GraphMethodException",
"code": 100

我试过的第二种方法:

$fd = 'XXXX';
$tag = array(
    'tag_uid' => $fd,
    'x' => '10.0',
    'y' => '10.0'
);
$tags = array($tag0);
$facebook->api(
    array(
        'method' => 'photos.addTag',
        'pid' => $photoId,
        'tags' => json_encode($tags)
    )
);

此代码也不标记照片。

【问题讨论】:

    标签: facebook facebook-graph-api tagging


    【解决方案1】:

    好的..我找到了解决方案..可以使用此代码进行标记

    $tag = array(
                'tag_uid' => $fb->getUser(),
                'x' => 0,
                'y' => 0
            );
            $tags[] = $tag;
            $image = array(
                'access_token' => $session['access_token'],
                'tags' => $tags,
            );
            $fb->setFileUploadSupport(true);
            $image['image'] = '@'.realpath($image_path);
            $fb->api('/me/photos', 'POST', $image);
    

    【讨论】:

      【解决方案2】:

      photos.addTag 是旧的遗留 REST API。你应该这样称呼:

      $fd = 'XXXX';
      $tag0 = array('to' => $fd, 'x' => '10.0', 'y' => '10.0');
      $tags = array($tag0);
      $facebook->api('/' . $photoId . '/tags', 'POST', $tags);
      

      【讨论】:

      • 没有出现错误..但是图片没有标记并且代码停在那里..该代码之后没有页脚...
      • “该代码后没有页脚...” - 这很可能意味着您的脚本中有错误,因此它会中断。在 PHP 配置中将 error_reporting 和 display_errors 设置为合理的级别,以便 PHP 可以向您显示该错误的原因。
      【解决方案3】:
      $post_url = "https://graph.facebook.com/"
              .$$photoId . "/tags/" . $friendid
      

      你真的应该做一些调试,而不是仅仅“想知道”为什么会失败……

      你在那里写了 $$photoId,带有两个 $ 符号。这就是 PHP 中所谓的“变量变量”,并且会尝试访问 name 是 $photoId 内容的变量——但我怀疑你确实 not 有在您的脚本中设置名为“$someuserid_somepictureid”的变量。

      所以除了给出一个错误(if 你已经将你的 error_reporting 设置为一些合理的东西,就像我已经告诉你的那样),if 你刚刚做了一个调试输出$post_url 你很容易发现它有问题……

      【讨论】:

      • 这不是错误导致响应“消息”:“不支持的发布请求。”,这是发布方法不正确..代码只是一个错字..我已经声明了图片id 为 userid_photoid
      • 当然这会导致错误,因为您尝试连接的 API 地址将类似于 https://graph.facebook.com//tags/1234567890,并且当然您会得到一个 “不支持的发布请求”消息,因为它只是一个无意义的地址......
      • nvm..我刚刚找到了解决方案.. :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多