我已经完成了很多关于Facebook文档的阅读,但我对会话对象的作用感到非常困惑。例如,使用方法:
session = [FBSession sessionForApplication:myApiKey secret:myAppSecret delegate:self];
我应该对返回给我的会话对象做什么,大概我需要等待委托回调才能做任何事情?
其次......在我的应用程序稍后执行时,当用户授权我在上次执行期间访问其帐户时,如何获取对会话对象的引用,以便我可以连接到他们的Facebook帐户并发布状态等等?文档提到[会话简历],但不要说会话引用应该来自何处。 (调用[[FBSession session] resume]编译,但不起作用。)
感谢。
答案 0 :(得分:2)
我应该对返回给我的会话对象做什么,大概我需要等待委托回调才能做任何事情?
您必须为用户创建并显示FBLoginDialog
。在用户登录之前,不会调用委托方法。它与首先创建会话实例无关。
如何获取对会话对象的引用,以便我可以连接到他们的Facebook帐户
Facebook Connect库会将会话信息存储在您应用的用户默认值中。您无需执行任何操作来存储它。据我了解,每次启动应用时,都应使用+sessionForApplication:secret:delegate:
创建会话对象,然后调用[session resume]
。如果FBConnect库找到存储在用户默认值中的有效会话,它将返回YES
,您可以继续,因为用户现在已登录。如果resume
返回NO
,您将拥有显示登录对话框。
会话信息将根据应用程序的首选项存储在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]
然后显示登录对话框,如果已经登录,则直接显示到发布对话框。