0

我已经阅读了很多 Facebook 文档,但我对会话对象的角色感到很困惑。例如,使用以下方法:

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

当我可能需要等待委托回调才能做任何事情时,我应该如何处理返回给我的会话对象?

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

谢谢。

4

2 回答 2

2

当我可能需要等待委托回调才能做任何事情时,我应该如何处理返回给我的会话对象?

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

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

Facebook Connect 库会将会话信息存储在您应用的用户默认设置中。你不需要做任何事情来存储它。据我了解,在每次启动您的应用程序时,您都应该使用创建会话对象,+sessionForApplication:secret:delegate:然后调用[session resume]. 如果 FBConnect 库发现存储在用户默认值中的有效会话,它将返回YES并且您可以继续,因为用户现在已登录。如果resume返回NO,您将必须显示登录对话框。

来自Facebook 的文档

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

于 2010-02-09T03:06:00.120 回答
1

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

首先创建会话对象:

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

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

您必须实现该方法:

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

虽然我什么都不用。

要检查用户是否已经登录,我调用:

[[FBSession session] isConnected]

然后显示登录对话框或直接进入发布对话框(如果他们已经登录)。

于 2010-02-10T10:28:17.300 回答