1

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

            }
        }

但执行后,这些帖子似乎仍然是公开的,并且没有附加任何目标。

4

2 回答 2

1

尝试feed_targeting而不是targeting

您可以定位的所有参数(如语言、城市、县)都是特定于 Facebook 的。您可以通过自动完成数据解决它们:

“{'locales':[1001],'countries':[GE],'cities':[825886]}”

带有目标的自动发布的不错功能,但在 Facebook 文档中记录得非常糟糕......

于 2014-03-07T12:21:00.123 回答
1

正确的解决方案是:您生成城市的密钥(使用 API)并使用国家/地区的 2 个字母代码。$messageData 将是:

$messageData = [
    'access_token' => $AccessToken,
    'message'      => $GenerateMessageStr,
    'targeting'    => "{'cities': <generated city key>,'countries':'GE'}"
]

如果您使用 API v2.8 和当前的 Facebook PHP SDK (5):

$request = new \Facebook\FacebookRequest(
    $fbApp,
    $accessToken,
   'POST',
   '/<facebook-page-id>/feed',
    [
        'message' => 'With Geolocate Ib',
        'targeting' => "{'geo_locations': {'cities': [{'key':" . <city key> . "}]}}"
    ]
);

定位标志确保只有指定城市、地区等的人才能看到帖子。feeds_targeting可能仍允许不在这些城市/地区的人查看帖子。

于 2017-02-11T19:42:19.660 回答