代码之家  ›  专栏  ›  技术社区  ›  Greg Maletic

Facebook Connect for iPhone中会话对象的混淆

  •  0
  • Greg Maletic  · 技术社区  · 15 年前

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

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

    2 回复  |  直到 15 年前
        1
  •  2
  •   Ole Begemann    15 年前

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

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

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

    Facebook连接库将在应用程序的用户默认值中存储会话信息。你不必做任何事情来储存它。据我所知,每次启动应用程序时,都应该创建会话对象 +sessionForApplication:secret:delegate: 然后打电话 [session resume] . 如果FBConnect库找到存储在用户默认值中的有效会话,它将返回 YES 用户现在登录后,您可以继续。如果 resume 退货 NO ,则必须显示登录对话框。

    Facebook's docs

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

        2
  •  1
  •   Magic Bullet Dave    15 年前

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

    首先创建会话对象:

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

    您必须实现以下方法:

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

    虽然我什么都不用。

    要检查用户是否已登录,我打电话:

    [[FBSession session] isConnected]