我试图在facebook上发布图像和链接。我能够登录获取用户详细信息,但我无法发布图像和链接。以下是我使用的代码
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="600" height="300"
creationComplete="initApp()">
<s:states>
<s:State name="loggedout"/>
<s:State name="loggedin"/>
</s:states>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.facebook.graph.Facebook;
import com.facebook.graph.controls.Distractor;
protected function initApp():void
{
Facebook.init("XXXX",loginHandler);
}
protected function loginHandler(success:Object,fail:Object):void
{
if(success){
currentState="loggedin";
Facebook.api("/me",getMeHandler);
userImg.source=Facebook.getImageUrl(success.uid,"small");
Facebook.api("/me/statuses",getStatusHandler);
}
}
protected function login():void
{
Facebook.login(loginHandler, {perms:"user_birthday,read_stream,publish_stream"});
}
protected function getMeHandler(result:Object,fail:Object):void{
nameLbl.text=result.name;
birthdayLbl.text=result.birthday;
}
protected function logout():void
{
Facebook.logout(logoutHandler);
currentState="loggedout";
}
protected function getStatusHandler(result:Object, fail:Object):void
{
statusLbl.text=result[0].message;
}
protected function submitPost():void
{
var obj:Object = new Object();
obj.message = statusInput.text;
obj.link = "url of the image stored on the server";
obj.type ='link';
Facebook.api("/me/feed",submitPostHandler,obj, "POST");
}
protected function submitPostHandler(result:Object,fail:Object):void
{
statusInput.text="";
Facebook.api("/me/statuses",getStatusHandler);
}
protected function logoutHandler(response:Object):void{
}
]]>
</fx:Script>
<s:Button label="Log in" includeIn="loggedout" right="10" top="10" click="login()" skinClass="skins.FBLoginButtonSkin"/>
<s:Button includeIn="loggedin" label="Log out" right="10" top="10" click="logout()" skinClass="skins.FBLogoutButtonSkin"/>
<mx:Form includeIn="loggedin" top="10" left="70">
<mx:FormItem label="User">
<s:Label id="nameLbl"/>
</mx:FormItem>
<mx:FormItem label="Birthday">
<s:Label id="birthdayLbl"/>
</mx:FormItem>
<mx:FormItem label="Status">
<s:Label id="statusLbl"/>
</mx:FormItem>
<mx:FormItem label="Post status" direction="horizontal">
<s:TextInput id="statusInput"/>
<s:Button label="Submit" click="submitPost()"/>
</mx:FormItem>
</mx:Form>
<mx:Image includeIn="loggedin" id="userImg" top="10" width="50" left="10"/>
图像存储在公共服务器上。任何人都可以指出我在哪里做错了???
答案 0 :(得分:0)
我不太确定这一行:
Facebook.login(loginHandler, {perms:"user_birthday,read_stream,publish_stream"});
在空中我正在使用:
Facebook.login(loginHandler, ['email', 'user_birthday', 'read_stream', 'publish_stream']);
当您允许应用程序使用您的数据时,您是否看到这样的内容?
<强>更新强>
尝试这样:
private function submitPost():void {
var params:Object =
{
message:'My test post of the image',
picture:'http://actual.path.to.the.jpg',
link:'',
name:'',
caption:'',
description:'description about image',
source:'';
};
FacebookDesktop.api('/me/feed', submitPostHandler, params, "POST");
};
在这里阅读更多相关信息:
https://developers.facebook.com/docs/reference/api/#publishing
在这里: