Facebook将朋友标记为图片

时间:2012-09-22 12:33:24

标签: php facebook api tags

在代码标签下面只有第一个uid然后它显示致命错误:未捕获OAuthException:(#100)参数无效,我可以使用精确位置进行标记..如下面的代码x和y值在像素

$facebook = new Facebook ( array (
        'appId' => FBAPPID,
        'secret' => FBSECRETID 
) );
$facebook->setFileUploadSupport ( true );
if (isset ( $_POST ['image'] ) && isset ( $_POST ['tname'] )) {

    $path_to_image = encrypt::instance ()->decode ( $_POST ['image'] );
    $tags = (array)encrypt::instance ()->decode ( $_POST ['tname'] );
    /*
     * Output
     $tags = array (
            0 => '[{"tag_uid":"100001083191675","x":100,"y":100},{"tag_uid":"100001713817872","x":100,"y":230},{"tag_uid":"100000949945144","x":100,"y":360},{"tag_uid":"100001427144227","x":230,"y":100},{"tag_uid":"100000643504257","x":230,"y":230},{"tag_uid":"100001155130231","x":230,"y":360}]' 
        );
     */

    $args = array (
            'message' => 'Von ',
            'source' => '@' . $path_to_image,
            'access_token' => $this->user->fbtoken 
    )
    ;
    $photo = $facebook->api ( $this->user->data->fbid . '/photos', 'post', $args ); // upload works but not tags

    if (is_array ( $photo ) && ! empty ( $photo ['id'] )) {
        echo 'Photo uploaded. Check it on Graph API Explorer. ID: ' . $photo ['id'];
        foreach ( $tags as $key => $t ) {
            $tagRe = json_encode ( $t );
            $args = array (
                    'tags' => $tagRe,
                    'access_token' => $this->user->fbtoken 
            );
            $facebook->api ( '/' . $photo ['id'] . '/tags', 'post', $args );
        }
    }
}

1 个答案:

答案 0 :(得分:0)

有一件事我没有。

foreach标签是对的吗? 在foreach中,您在array中再次传递了它?比你encode呢?为什么呢?

第二个请提供更多详细信息和代码。

我只能用这些细节帮助你。

如果您放置以下代码。

foreach ( $tags as $t ) {
       echo "<pre>";
       print_r(json_encode($t));
    }

您将获得以下结果

// encoded to json
{"tag_uid":"100001701664011","x":100,"y":100}
{"tag_uid":"100001726935992","x":100,"y":230}
{"tag_uid":"100001628449733","x":100,"y":360}
{"tag_uid":"100001286641924","x":230,"y":100}
{"tag_uid":"100001785887853","x":230,"y":230}

所以你只需要这样做

foreach ( $tags as $t ) {
       $tagRes = json_encode($t);
    }

只需在变量中传递t并在那里对其进行编码。

请提供更多代码