我正在创建FB应用程序,上传并将图像发布到用户的墙上,此时我已经陷入困境。我想在FB登台服务器上传图像,因为我的服务器太小了。当我尝试使用此代码发布图像时
FB.api('/me/staging_resources?access_token='+access_token, 'post', {file: file_uri}, function(response) {
if (!response) {
alert('Error occurred.');
} else if (response.error) {
console.log('Error: ' + response.error.message);
} else {
console.log('File uri is ' + response.uri );
file_uri = response.uri;
}
});
其中file_uri是包含https地址的变量,我经常收到错误"(#100) Invalid file. Expected file of one of the following types: image/jpg, image/jpeg, image/gif, image/png"
。我也从Graph API Explorer测试了同样的错误。
我尝试了所有的东西,把url放到生成图像的文件中,直接将url放到图像上,http,https,来自其他网站的一些图像......总是一样的。
有没有人对我有任何帮助,也许我错过了什么?
提前致谢, 尼古拉
修改 - 解决方案
再次感谢Jason,我成功获得了图像,如果有人遇到这个问题,解决方案是制作单独的curl文件,用图像和访问令牌的url调用https://graph.facebook.com/me/staging_resources
,然后在js文件中一个简单的电话
$.get('/curl.php?url='+image_url+'&access_token='+access_token,function(response){
console.log(response);
});
答案 0 :(得分:0)
根据documentation,file参数需要实际是文件数据(如enctype='multipart/form-data'
HTTP POST中所示)。作为一个例子,他们通过curl显示发布:
curl -X POST \
https://graph.facebook.com/me/staging_resources \
-F "file=@images/prawn-curry-1.jpg" \
-F "access_token=$USER_ACCESS_TOKEN"
它不能将URI解析为文件(您必须执行提取)