这就是我想要发生的事情:
我去看了图形 API 文档,但考虑到我是一个视觉学习者,这并没有真正帮助我。为了获得移动应用程序的基本功能,我遵循了一些教程,这些教程让我在应用程序中实现其他更复杂的功能时陷入了悬崖。
我将在此处列出移动应用程序的链接:第 1 部分、第 2 部分。这些教程对我帮助很大。但当他们结束时,我不得不开始自己实现功能,我有点陷入停滞状态。我一直在寻找如何做到这一点,但找不到任何有帮助的东西,因为它们都是针对桌面应用程序的。我还查看了 Facebook API 提供的示例代码以供参考。但没有一个适用于 Flex Mobile,而且您似乎必须像他们一样编写代码才能使这些功能正常工作。好吧。所以再一次,我只是希望能够有一个可以显示的朋友列表。稍后我会担心了解朋友的详细信息。我想我也许能够做到这一点。另外,我将发布我的所有代码,因为我现在无法保护它。不过我要声明一件事。我绝不要求别人为我编写代码。我只是一个非常依赖视觉的学习者。但我认为,如果我能够以更简单的方式解释实现功能的过程,我将能够处理好自己的事情。这也带来了另一个问题。因为我是一个视觉人。使用 flash 代替 Flash Builder 会更适合我吗?
这是代码:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
applicationDPI="160" creationComplete="application1_creationCompleteHandler(event)"
currentState="loggedout"
width.loggedin="392" height.loggedin="442">
<fx:Style source="beta.css"/>
<fx:Script>
<![CDATA[
import com.facebook.graph.FacebookMobile;
import com.facebook.graph.controls.Distractor;
import com.facebook.graph.core.FacebookURLDefaults;
import com.facebook.graph.data.Batch;
import com.facebook.graph.net.FacebookRequest;
import com.facebook.graph.utils.FacebookDataUtils;
import mx.collections.ArrayList;
import mx.core.UIComponent;
import mx.events.FlexEvent;
public var permissions:Array = ["user_photos","user_birthday","read_stream","publish_stream","read_friendslists","manage_friendslist"];
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
FacebookMobile.init("APP_ID", onLogin)
}
protected function submitPost():void
{
FacebookMobile.api("/me/feed",submitPostHandler,{message:statusInput.text}, "POST");
}
protected function submitPostHandler(result:Object,fail:Object):void
{
statusInput.text="";
FacebookMobile.api("/me/statuses",getStatusHandler);
}
protected function getStatusHandler(postsuccess:Object, fail:Object):void
{
lblStatus.text=postsuccess[0].message;
}
protected function login():void{
var facebookWebView:StageWebView = new StageWebView();
facebookWebView.viewPort = new Rectangle(0,0,stage.width, stage.height-100);
FacebookMobile.login(onLogin, this.stage,permissions, facebookWebView);
}
protected function onLogin(success:Object, fail:Object):void{
if(success){
currentState="loggedin";
nameLbl.text=success.user.name;
imgUser.source=FacebookMobile.getImageUrl(success.uid,"small");
birthdayLbl.text=success.user.birthday;
FacebookMobile.api("me/statuses",getStatusHandler);
}
}
]]>
</fx:Script>
<s:states>
<s:State name="loggedin"/>
<s:State name="loggedout"/>
</s:states>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Button id="loginoutBtn" x="244" y="13" label="Log In"
x.loggedin="228" y.loggedin="10" label.loggedin="Log out"
click.loggedout="login()"/>
<s:Label id="nameLbl" includeIn="loggedin" x="67" y="11" width="97" height="43"/>
<s:Image id="imgUser" includeIn="loggedin" x="8" y="9" width="50"/>
<s:Label id="birthdayLbl" includeIn="loggedin" x="66" y="86" width="96"/>
<s:Label id="lblStatus" includeIn="loggedin" x="10" y="135" width="154" height="58" />
<s:TextInput id="statusInput" includeIn="loggedin" x="10" y="230" height="40"/>
<s:Button includeIn="loggedin" x="172" y="278" width="115" height="32" label="Submit"
click="submitPost()"/>
<s:Button x="10" y="147" width="157" label="Post photo" includeIn="loggedin"
x.loggedin="10" y.loggedin="278" width.loggedin="113" height.loggedin="32"/>
<s:List includeIn="loggedin" x="170" y="61" width="212" height="161" itemRenderer="friendsRender"></s:List>
</s:Application>
假设您有as3的facebook mobile,您可以使用以下功能:
FacebookMobile.api("/me/friends",onApiCallFriends);
protected function onApiCallFriends(response:Object, fail:Object):void
{
if (response)
{
var friends:Array = response as Array;
}
}
应该是这样。
请下载Graph API 1.8.1示例:
http://code.google.com/p/facebook-actionscript-api/downloads/detail?name=GraphAPI_Examples_1_8_1.zip
有:
好友列表_flash
FriendsList_flex
好友列表Mobile_Flash
http://code.google.com/p/facebook-actionscript-api/source/browse/trunk/examples/?r=342