我试图在他们的文档中在facebook的网站上找到这个,但到目前为止没有运气。我相信其他人之前必须遇到这种情况。
我使用Amazon S3存储图像。我提前不知道如果我将我的桶命名为带有子域名的域名,我可以用这种方式链接,所以在我移动所有图片之前,我必须链接到mybucket.s3.amazonaws.com域。当我从那里包含一张带有帖子到墙上的图片时,图片不会显示出来。如果我将图片更改为服务器本身的图片,则会显示图片。看来图片的域名必须与我的应用匹配?我看着bugzilla并没有看到这提到。 Facebook的论坛说要在这里发布问题。
我正在使用CodePlex的C#Facebook SDK。
我的代码看起来像(删除了错误处理和身份验证检查):
var client = new FacebookClient(FACEBOOK_APP_ID, FACEBOOK_SECRET);
client.AccessToken = facebook.AccessToken;
var parameters = new Dictionary<string, object>();
parameters.Add("name", name);
parameters.Add("caption", title);
parameters.Add("message", message);
parameters.Add("link", link);
parameters.Add("source", link);
parameters.Add("picture", imageUrl);
client.Post("me/feed", parameters);
我确认imageUrl确实有正确的图片,域名不匹配。亚马逊s3上的图片具有公共读取权限。我可以从浏览器中查看它,所以我不认为这是一个权限问题。我尝试了几个不同的图片同样的问题。到目前为止,只有当图片出现在服务器本身时才有效。
所以,我的问题是,这是我的问题,还是facebook会阻止与应用程序中指定的域名不匹配的图片?
答案 0 :(得分:4)
您可以从该网址上传图片,然后在帖子中添加其对象ID。
请参阅:http://developers.facebook.com/blog/post/526/?ref=nf
通过网址将照片上传到图谱API
今年早些时候,我们发布了直接上传照片的支持 通过Graph API。这需要将照片作为MIME编码发送 形式领域。我们现在正在增强我们的照片上传功能 通过提供URL来介绍上传照片的功能 图片。这简化了许多用例的照片管理:
- 在Amazon S3或类似产品上托管其图像的应用开发者 服务可以直接将S3 URL传递给Facebook而无需使用 将文件下载到他们的应用程序服务器只上传它 再次到Facebook。这提高了性能并降低了成本 开发者。
- 在没有良好支持的平台上编写的应用程序 多部分文件上传可以更轻松地创建新照片。
要通过网址上传照片,只需向其发出HTTP POST即可 ALBUM_ID /照片,其中url字段设置为您的照片的网址 希望上传。您需要publish_stream权限才能执行此操作 操作。您还可以包含可选的消息参数来设置a 照片的标题。
答案 1 :(得分:4)
我也面临同样的问题。根据我的观察,当图片网址有多个子域时,facebook似乎不喜欢它。
我为同一张图片尝试了以下2个网址变体..
mybucket.s3.amazonaws.com - 抛出错误
s3.amazonaws.com/mybucket - 工作正常
:picture => 'http://mybucket.s3.amazonaws.com/footprints/15/coverimgs/medium.jpg'
OAuthException: (#100) picture URL is not properly formatted
:picture => 'http://s3.amazonaws.com/mybucket/footprints/15/coverimgs/medium.jpg'
{"id"=>"587472956_10150280873767957"}
现在我必须弄清楚如何在将图像传递给FB图形API时更改图像的URL结构。
答案 2 :(得分:0)
我会log it as a bug。如果确实如此,我有点怀疑,你可以在你自己的域上为每个重定向到亚马逊网址的图片创建301重定向。