所以我用FB Graph API开发了APP。此应用程序在指定的Facebook页面上写帖子。我决定我需要附上国家和城市的目标。所以我写了这样的代码:
if( count( $DataArray ) > 0 ) {
$MessageData = null;
$AccessToken = $this->GetAccessToken();
foreach( $DataArray as $ItemArray ) {
$CleanTitle = $this->ValidateTitle( $ItemArray['title'], $NotAcceptableWords );
$GenerateMessageStr = "{$CleanTitle} - http://someutl/ID/{$Item['id']}/Feed/";
$MessageData = array (
'access_token' => $AccessToken,
'message' => $GenerateMessageStr,
'targeting' => "{'cities':'Tbilisi','countries':'Georgia'}"
);
try {
$this->FacebookObject->api("/{$this->FacebookPageId}/feed", 'POST', $MessageData);
}
catch (FacebookApiException $e) {
print_r($e);
}
}
}
但是在执行之后,这些帖子似乎仍然是公开的,并且没有附加某些定位。
答案 0 :(得分:1)
尝试使用feed_targeting
代替targeting
!
您可以定位的所有参数,如语言,城市,县都是针对特定于Facebook的。您可以通过autocomplete data解决这些问题:
“{ '区域设置':[1001], '国家':[GE], '城市':[825886]}”
使用定位自动发布的不错功能,但在Facebook文档中记录得很糟糕......
答案 1 :(得分:1)
正确的解决方案是:您为城市生成密钥(使用API)并使用国家/地区的2个字母代码。 $ messageData将是:
cv.glm
如果您使用的是API v2.8和当前的Facebook PHP SDK(5):
$messageData = [
'access_token' => $AccessToken,
'message' => $GenerateMessageStr,
'targeting' => "{'cities': <generated city key>,'countries':'GE'}"
]
定位标记可确保只有指定城市,区域等的人看到帖子。 feeds_targeting 可能仍然允许不在这些城市/地区的人看到帖子。