在代码标签下面只有第一个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 );
}
}
}
答案 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并在那里对其进行编码。
请提供更多代码