关于Facebook Connect for iPhone中的会话对象的困惑

时间:2010-02-09 02:32:07

标签: iphone session facebook fbconnect

我已经完成了很多关于Facebook文档的阅读,但我对会话对象的作用感到非常困惑。例如,使用方法:

session = [FBSession sessionForApplication:myApiKey secret:myAppSecret delegate:self];

我应该对返回给我的会话对象做什么,大概我需要等待委托回调才能做任何事情?

其次......在我的应用程序稍后执行时,当用户授权我在上次执行期间访问其帐户时,如何获取对会话对象的引用,以便我可以连接到他们的Facebook帐户并发布状态等等?文档提到[会话简历],但不要说会话引用应该来自何处。 (调用[[FBSession session] resume]编译,但不起作用。)

感谢。

2 个答案:

答案 0 :(得分:2)

  

我应该对返回给我的会话对象做什么,大概我需要等待委托回调才能做任何事情?

您必须为用户创建并显示FBLoginDialog。在用户登录之前,不会调用委托方法。它与首先创建会话实例无关。

  

如何获取对会话对象的引用,以便我可以连接到他们的Facebook帐户

Facebook Connect库会将会话信息存储在您应用的用户默认值中。您无需执行任何操作来存储它。据我了解,每次启动应用时,都应使用+sessionForApplication:secret:delegate:创建会话对象,然后调用[session resume]。如果FBConnect库找到存储在用户默认值中的有效会话,它将返回YES,您可以继续,因为用户现在已登录。如果resume返回NO,您将拥有显示登录对话框。

来自Facebook's docs

  

会话信息将根据应用程序的首选项存储在iPhone磁盘上,因此您无需每次使用应用程序时都要求用户登录。创建会话对象后,请调用[会话恢复]以恢复上一个会话。如果会话已过期或您尚未创建会话,它将返回NO,您将不得不要求您的用户登录。会话在两小时不活动后过期。

答案 1 :(得分:1)

这是Ole的回答和评论,因为它就在那里。这就是我所做的。

首先创建会话对象:

facebookSession = [[FBSession sessionForApplication:SESSION secret:SECRET delegate:self]retain];    
[facebookSession resume];

第二行从设置文件中提取会话数据,以便在用户指定他们希望保持登录状态时保持登录状态。

您必须实施该方法:

- (void)session:(FBSession*)session didLogin:(FBUID)uid

虽然我不用它做任何事情。

要检查用户是否已登录,请致电:

[[FBSession session] isConnected]

然后显示登录对话框,如果已经登录,则直接显示到发布对话框。