Размещение изображения на Facebook с помощью flex - PullRequest
0 голосов
/ 19 июля 2011

Я пытаюсь опубликовать изображение вместе со ссылкой на 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"/>

Изображение хранится на общедоступном сервере. Может кто-нибудь указать мне, где я ошибаюсь ???

1 Ответ

0 голосов
/ 19 июля 2011

Я не совсем уверен в этой строке:

Facebook.login(loginHandler,  {perms:"user_birthday,read_stream,publish_stream"});

в эфире я использую:

Facebook.login(loginHandler, ['email', 'user_birthday', 'read_stream', 'publish_stream']);

когда вы разрешаете приложению использовать ваши данные, вы видите это так?

enter image description here

UPDATE

попробуйте так:

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

и здесь:

https://developers.facebook.com/docs/reference/api/post/

...