#html #flash #apache-flex #facebook
#HTML #flash #apache-flex #Facebook
Вопрос:
В настоящее время я учусь создавать приложения facebook с помощью Flex отсюда: http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt3.html
Я выполнил шаг 6 в разделе «Загрузить приложение на ваш веб-сервер», который заключается в загрузке файлов Flex в папку bin-debug через FTP и запуске его, но facebook apps просто не отображаются на веб-сервере, который я использую. вот куда я загрузил файлы:http://cobacoba.netai.net/facebook/denishere /
Я не могу найти проблему, это из-за веб-хостинга или что?
Ответ №1:
Похоже, что ваш веб-сервер или домен в настоящее время заблокирован или перенаправлен в другое место. Скорее всего, это делается вашим веб-хостингом. Вам следует связаться с ними и спросить о любых проблемах с вашим сайтом.
Ответ №2:
я использовал ту же ссылку для разработки интерфейса facebook-flex,
Я передаю код вместе с вами,
используйте по крайней мере flex3.5, если вы работаете на flex3, это не сработает, и да, разработка приложения air намного проще, для этого даже не нужна веб-поддержка, но для разработки веб-приложения требуется веб-сервер, вы не сможете проверить facebook app на вашем локальном компьютере, вам нужно загрузить его на веб-сервер, только тогда оно будет работать
у меня есть этот код, который работает,
<mx:Script> <![CDATA[ import com.Global; import com.PMSocial; import com.adobe.serialization.json.JSON; import com.facebook.graph.Facebook;
import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.ToolTip; import mx.managers.ToolTipManager;
protected var topURL:String=ExternalInterface.call('top.location.toString'); [Bindable]private var facebookPhotoAlbums:ArrayCollection; [Bindable]private var facebookPhotos:ArrayCollection;
private var btn1Info:String="Click this button to log in to Facebook"; private var btn2Info:String="Logout"; private var btn3Info:String="Press this button, to get n Album List in Drop down..";
protected function initApp():void {
Facebook.init("Your application ID",loginHandler); }
protected function loginHandler(success:Object,fail:Object):void {
if(success){
Facebook.api("/me",getMeHandler);
//userImg.source=Facebook.getImageUrl(success.uid,"small");
Facebook.api("/me/statuses",getStatusHandler);
}
else if(!success amp;amp; !topURL){
ExternalInterface.call("redirect","207419415939415", "user_birthday,read_stream,publish_stream","http://apps.facebook.com/flex-connectivity/");
}
}
/* 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 loginHandler(success:Object,fail:Object):void {
if(success)
{
currentState="loggedin";
Facebook.api("/me",getMeHandler);
userImg.source=FacebookDesktop.getImageUrl(success.uid,"small");
FacebookDesktop.api("/me/statuses",getStatusHandler);
} } */
protected function login():void {
Facebook.login(loginHandler,{perms:"user_birthday,user_photos,read_stream, publish_stream"});
//Facebook.login(loginHandler,["user_birthday","read_stream","publish_stream"]); } public function logout():void {
Facebook.logout(logoutHandler);
//currentState="loggedout"; }
protected function logoutHandler(response:Object):void {
}
protected function getMeHandler(result:Object,fail:Object):void {
nameLbl.text = result.name;
//birthdayLbl.text=result.birthday;
getPhotoAlbums(); }
protected function getStatusHandler(result:Object, fail:Object):void {
//trace(result[0].message);
//statusLbl.text = result[0].message; } protected function submitPost():void {
//Facebook.api("/me/feed",submitPostHandler,{message:statusInput.text}, "POST"); }
protected function submitPostHandler(result:Object,fail:Object):void {
//statusInput.text="";
//Facebook.api("/me/statuses",getStatusHandler); }
private function getPhotoAlbums():void {
var fql:String = "select name, aid from album where owner = me()";
Facebook.fqlQuery(fql, handleGetAlbumsResponse); }
private function handleGetAlbumsResponse(albums:Object, fail:Object):void {
//Alert.show('handleGetAlbumsResponse : ' (albums==null)?"empty":"non-empty");
if (albums != null)
facebookPhotoAlbums = new ArrayCollection(albums as Array);
else
Alert.show("Error in albums"); }
private function showSelectedAlbum():void {
var fql:String = "select pid,src_big, src_small from photo where aid = '" albumCombo.selectedItem.aid "'";
Facebook.fqlQuery(fql, handleGetPhotosResponse); }
private function handleGetPhotosResponse(photos:Object, fail:Object):void {
if (photos != null)
{
facebookPhotos = new ArrayCollection(photos as Array);
//Alert.show('facebookPhotos : nnn' JSON.encode(facebookPhotos));
Global.facebookArr.removeAll();
for each(var obj:Object in facebookPhotos)
{
var o:Object = new Object();
o.imgCatId = "facebook";
o.imgSubCatId = obj.pid;
o.small = obj.src_small;
o.large = obj.src_big;
o.maxW = 400; //default size is 400 X 500
o.maxH = 500;
o.available = false;
Global.facebookArr.addItem(o);
}
imagePage.dataProvider = Global.facebookArr;
}
else
Alert.show("Error in photos"); }
public var myTip:ToolTip; private function createBigTip(str:String,event:MouseEvent):void {
var p:Point = new Point();
p = event.target.localToGlobal(new Point(event.target.parent.x,event.target.parent.y));
myTip = ToolTipManager.createToolTip(str,p.x 40,p.y 30,'errorTipBelow') as ToolTip;
//myTip.setStyle("styleName", "errors"); }
private function destroyBigTip():void {
if(myTip)
ToolTipManager.destroyToolTip(myTip); }
private var exixts:Boolean;
private function submitFromFB(event:MouseEvent):void {
for each(var obj:Object in Global.facebookArr)
{
exixts = false;
if(obj.available)
{
if(Global.ImageArr.length>0)
{
for each(var o:Object in Global.ImageArr)
{
if(obj.imgSubCatId == o.imgSubCatId)
{
exixts = true;
break;
}
}
}
if(!exixts)
Global.ImageArr.addItemAt(obj,0);
}
}
logout();
PMSocial.remove(); }
]]> </mx:Script>
<mx:HBox borderStyle="solid" width="100%" verticalAlign="middle"> <mx:Button label="Login" click="login()" rollOver="createBigTip(btn1Info,event)" rollOut="destroyBigTip()" styleName="socialBtn" width="125" height="25"/> <mx:Button label="Logout" click="logout()" rollOver="createBigTip(btn2Info,event)" rollOut="destroyBigTip()" styleName="socialBtn" width="125" height="25"/> <mx:Spacer width="100%"/> <mx:Label text="Welcome, " fontSize="13" fontFamily="Droid Sans"/> <mx:Label id="nameLbl" text="Guest" fontSize="13" fontFamily="Droid Sans"/> <!--<mx:Button label="3. Browse Photos" click="getPhotoAlbums()" rollOver="createBigTip(btn3Info,event)" rollOut="destroyBigTip()"/>--> <!--<mx:Image id="userImg" top="171" width="50" height="50" left="10"/>--> </mx:HBox> <!--<mx:Label id="status" text="Status Message : Please log in" />--> <mx:ComboBox id="albumCombo" textAlign="left" styleName="ComboBox11" prompt="Select Album" dataProvider="{facebookPhotoAlbums}" change="showSelectedAlbum()" labelField="name"/> <mx:VBox height="100%" width="100%" paddingTop="3" verticalGap="0"> <mx:Label id="l1" text="Check images you want to upload, Please click on images you want to use" fontFamily="Droid Sans" fontSize="13"/> <mx:TileList id="imagePage" height="100%" width="100%"
columnCount="5"
selectionColor="0xFFFFFF" rollOverColor="0xFFFFFF"
rowHeight="150" borderStyle="solid" paddingBottom="-4"> <mx:itemRenderer>
<mx:Component>
<view:ManageClipart/>
</mx:Component> </mx:itemRenderer> </mx:TileList> <mx:Canvas width="100%"> <mx:Button id="submit" right="0" label="Submit" styleName="yesbtn"
useHandCursor="true" buttonMode="true" click="submitFromFB(event)"/> </mx:Canvas>
</mx:VBox> </mx:VBox>
Надеюсь, это будет полезно, поскольку этот api действительно доставляет массу мучений, хаха, всего наилучшего