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

正しい解決策は、(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 に答える