【问题标题】:Uploaded video status via Facebook PHP Business SDK for advertisements通过 Facebook PHP Business SDK 为广告上传视频状态
【发布时间】:2018-08-28 16:26:30
【问题描述】:

我正在尝试通过 Facebook Business SDK 创建广告。在我尝试创建 AdCreativeVideoData 之前,一切正常。代码:

 protected function createAdVideoCreative($thumbnail_url, $video_id, $name){
    $video_data = new AdCreativeVideoData();
    $video_data->setData(array(
        AdCreativeVideoDataFields::IMAGE_URL => $thumbnail_url,
        AdCreativeVideoDataFields::VIDEO_ID => $video_id,
        AdCreativeVideoDataFields::CALL_TO_ACTION => array(
            'type' => AdCreativeCallToActionTypeValues::LIKE_PAGE,
            'value' => array(
                'page' => FbAds::PAGE_ID,
            ),
        ),
    ));

    $object_story_spec = new AdCreativeObjectStorySpec();
    $object_story_spec->setData(array(
        AdCreativeObjectStorySpecFields::PAGE_ID => FbAds::PAGE_ID,
        AdCreativeObjectStorySpecFields::VIDEO_DATA => $video_data,
    ));

    $creative = new AdCreative(null, FbAds::AD_ACCOUNT_ID);

    $creative->setData(array(
        AdCreativeFields::NAME => $name,
        AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
    ));

    try {
        $creative->create();

        return $creative;
    } catch (Exception $e) {
        print("Create Ad Video Creative Exception: " . $e->getMessage() . " (" . $e->getCode() . ")");

        exit;
    }
}

通过以下方法将所选视频上传到Facebook时调用上述方法:

   protected function createAdVideo($video_path){
    $video = new Advideo(null, FbAds::AD_ACCOUNT_ID);

    $video->{AdVideoFields::SOURCE} = $video_path;

    try {
        $video->create();

        return $video->{AdVideoFields::ID};
    } catch (Exception $e) {
        print("Create Ad Video Exception: " . $e->getMessage() . " (" . $e->getCode() . ")");

        exit;
    }

}

问题是当我尝试创建 AdCreativeVideoData 时,会抛出以下错误:

[message] => Invalid parameter
[type] => OAuthException
[code] => 100
[error_subcode] => 1885252
[is_transient] => 
[error_user_title] => Video not ready for use in an ad
[error_user_msg] => The video is still being processed. Please wait for the video to finish processing before using it in an ad.
[fbtrace_id] => AwW0d9+Piz1

如您所见,视频尚未处理。我的问题是:如何查看视频的状态?是否有可用的端点,我可以 ping 来检查状态? documentation 声明我可以检查状态,但是 createAdVideo() 方法中的 AdVideo 对象没有状态字段:

我在这里不知所措,所以我希望有人能阐明这个问题。提前致谢!

【问题讨论】:

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


    【解决方案1】:

    AdVideo 此后没有 status 字段,但 Video 有:https://developers.facebook.com/docs/graph-api/reference/video

    在内部它是相同的id,因此您可以请求https://graph.facebook.com/v4.0/{video-id}?fields=id,status,它将返回上传(广告)视频的状态

    【讨论】:

      【解决方案2】:

      我认为这是因为根本没有上传视频。 而不是使用“源”尝试使用“file_url”。您可能还想添加一个参数“title”,这样它就不会被命名为 untitled video- 但它不是必需的。

      并尝试像这样更智能地使用 SDK:

      $myVideoUpload = (new AdAccount("act_123456676"))-
      >createAdVideo(
      array() //fields
      array( //params
      "file_url"=>"http://whatever.com",
      "title"=>"my title"
      )
      );
      

      如果可行,它将返回一个 id=video_id 的 json_encodes 字符串。

      如果您希望能够检索错误(如果有)以及所有 api 调用的通用方法,请使用 graph api:

      $fb = new Facebook(array(
      "app_id"=>"blalaa",
      "app_secret"=>"blaaaaa",
      "default_graph_version"=>"v9.0"
      ));
      $url = "/act_123456789/advideos";
      $access_token = "my token";
      $params = 
      array("file_url"=>"https://whatever.com","title"=>"some video");
      try{
       $response = $fb->post(
        $url,
        $params,
        $access_token
       )
       $response = $response->getGraphNode();
      } catch(FacebookResponseException $e) {
        return "graph error:: " . $e->getMessage();
      } catch(FacebookSDKException$e) {
        return "sdk error:: " . $e->getMessage();
      }
      

      如果您有一个 access_token 可以访问您请求的特定边缘,则最后一个可以应用于所有内容,因此只有他的 URL 需要与参数一起相应地更改。

      注意: 使用 graph-api 时:如果您想更改或创建某些内容,请使用 POST,如果您只想阅读,请使用 GET。

      【讨论】:

        猜你喜欢
        • 2019-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-12
        • 1970-01-01
        • 2011-09-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多