了解快速事实
我一直在编写一个应用程序,它可以让您从网络摄像头拍摄照片并将其发布到名为“我的应用程序”的相册中的用户照片(这是FB在您未指定相册时所执行的操作),然后将照片链接到一个新的Feed帖子中,然后将其上传到我客户的网络服务器,我的客户可以批准它在公司的Facebook页面上发布。
这听起来应该很简单,但是我遇到了大量各种性质的问题,改变了应用程序一百次(在Facebook改变政策混乱之后),但我似乎无法获得令人满意的结果。
这些是我尝试的方式:
将照片上传到用户的appname自动相册相册,从上传照片获取Facebook的网址,然后以这种方式将网址提供给要创建的Feed:
url = Facebook.getImageUrl(response.id);
var data:Object = { message:'testest', picture:url, description: 'test' };
Facebook.api("/me/feed", feedresponse, data, "POST");
这很好用,但在一些更新后我遇到了可怕的“(#341)Feed动作请求限制”。这对于我正在制作的应用程序来说是不可接受的。
Facebook.ui('feed', data);
来使用提供的Feed创建对话框,因此我重复了1)中的步骤,将照片上传到用户相册,从中获取了URL ID,在Feed创建对话框中使用了该url,但我很快就遇到了可怕的“流中不允许FBCDN图像”,wtf。 3)所以我试图让图像更小,有一些随机网络民众建议,但错误将持续存在。
4)然后我尝试自己托管这些图像,就像在客户端的网络服务器上一样,就像其他一些网络冲浪者建议的那样,但这也不起作用:
var data:Object = {
message: "Hey!",
picture: "https://<domain>/facebookapp/bin/immagini/27.jpg",
link: "https://<domain>/facebookapp/bin/immagini/27.jpg",
name: "moo photos",
caption: "moo photos",
description: "You took a picture! yay!"
};
Facebook.ui('feed', data);
正确显示供稿对话框,已创建供稿,但您无法看到图片。应直接显示在Feed中的图片仅作为用户点击的链接出现。
使用图形api检查Feed原始数据会发现“picture”属性没有设置为Feed,就像1)一样:
"message": "ppipipi",
"link": "https://<domain>/facebookapp/bin/immagini/27.jpg",
"name": "https://<domain>/facebookapp/bin/immagini/27.jpg",
"caption": "lol my heart out",
"description": "die in pain!",
"icon": "https://www.facebook.com/images/icons/default_app_icon.gif",
"actions":
5)所以我尝试使用前面步骤中的FBCDN图像链接并且它有效!不是FBCDN不允许??似乎接受服务器上已有的那些?
6)我改变了应用程序的流程,现在当我将照片更新到用户的相册时,就像这样:
var data:Object = { message:'TESTTESTTEST', fileName:'FILE_NAME', image:bitmapdata};
Facebook.api("/me/photos", uploadDone, data, "POST");
uploadDone
如果上传确实有效,则永远不会被调用!
我做错了什么?
答案 0 :(得分:0)
正如您的帖子所述,这是一个在“政策变更”后需要修改的应用程序。也许你错过了Facebook禁用了message
参数。
如果您要使用FB.ui()
发起对话,则由用户输入他/她想要的消息。
不确定这是否会解决您的问题,但我有一些Facebook的经验完全忽略了我在message
参数时发布的帖子。