Facebook Graph API,开发Facebook页面帖子定位(仅显示指定的国家/城市)

时间:2013-09-08 14:07:28

标签: php facebook-graph-api facebook-php-sdk

所以我用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);
                }

            }
        }

但是在执行之后,这些帖子似乎仍然是公开的,并且没有附加某些定位。

2 个答案:

答案 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 可能仍然允许不在这些城市/地区的人看到帖子。