Facebook Marketing API:将图片上传到库提供了一个 URL
Posted
技术标签:
【中文标题】Facebook Marketing API:将图片上传到库提供了一个 URL【英文标题】:Facebook Marketing API: Upload Image to library provided a URL 【发布时间】:2018-02-07 21:42:38 【问题描述】:我是 Facebook 营销 API 的新手,我正在做的是将图像上传到我的 FB 营销库。
现在,我可以成功地将图片上传到 FB Marketing,但很遗憾,我看不到是否有办法从 URL 上传图片。
有没有人有过这方面的经验?
代码示例:
Api::init(getenv('FACEBOOK_APP_ID'), getenv('FACEBOOK_APP_SECRET'), getenv('FACEBOOK_APP_TOKEN'));
/**
* @inheritdoc
*/
public function testFunc()
$adAccountId = getenv('FACEBOOK_APP_ACCOUNT_ID');
$account = new AdAccount();
$account->AdAccountFields::ID = $adAccountId;
$image = new AdImage(null, "act_$account->id");
$image->AdImageFields::FILENAME = getenv('FACEBOOK_APP_MARKETING_PATH').'fbTestImage.png';
$image->create();
$this->line('Image Hash: '.$image->AdImageFields::HASH.php_EOL);
【问题讨论】:
由于文档没有提到它,我认为这是不可能的。 谢谢@CBroe。在这种情况下你会推荐什么?获取然后在本地存储图像是一种选择吗? 好吧,这是一个选择...... 感谢您的意见,@CBroe。谢谢! 【参考方案1】:您必须使用 PHP 从 URL 中提取图像并将其写入临时文件,然后上传。然后在完成时删除临时文件(不理想,但解决方案)。 Node.js 营销 API 您可以向 API 提供内容而不是文件名,这很好。
不过目前可能的解决方案。
$url = "https://www.sample/image.png";
// Create output file name
$arr = explode("/",$url);
$img_file = dir(__FILE__).'/tmp_'.$arr[count($arr)-1];
// Load File contents from URL
$data = file_get_contents($url);
// Write Temporary File
$fp = fopen($img_file,"w");
fwrite($fp,$data);
fclose($fp);
// Then Push the temp file to Facebook
// Rest of FB Code...
$image->AdImageFields::FILENAME = $img_file;
// Wait for the Upload to complete then delete the temp file
unlink($img_file);
【讨论】:
以上是关于Facebook Marketing API:将图片上传到库提供了一个 URL的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Marketing Api - 循环运行抛出“AuthorizationException 发生未知错误”。 (第二次)