你如何预先授权facebook对话 - 比如apprequest?

时间:2012-09-11 17:47:28

标签: ios facebook authentication

我的目标是在我的应用中制作一个邀请朋友的apprequest按钮。

问题是它要求我登录。这通常不是问题,但在这种情况下,用户已经将他们的登录信息输入到Facebook以便在应用程序内执行另一个功能。该功能是由其他目前无法使用的人编写的。

最终发生的是用户必须登录两次。一旦使用其他人的功能,一旦使用apprequest对话框。我需要以某种方式共享凭据/授权/会话,以便我不会提示用户登录两次。

我没有在标准应用程序请求对话框代码中看到任何要传递预先授权尝试的参数。我假设我可以用Facebook对象做些什么。另外,我对Objective C很新,所以我对委托内容的理解非常薄弱。我一直在看它但我不知道facebook对象想要什么样的功能作为代表。我的理解是facebook可以回调给委托,基本上给出异步ack或req或类似的东西。但我怎么知道它期望什么样的代表呢?它会通过什么参数?等等..

无论如何,这是我的应用程序请求的基本代码块。我不知道从哪里开始,以防止登录框弹出两次。

Facebook *facebook = [[Facebook alloc] initWithAppId:<#(NSString *)#> andDelegate:<#(id<FBSessionDelegate>)#>]; 
// I realize I have to fill in my own AppID, which I have but I'm not entirely sure about the delegate

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"Come check out my app.",  @"message",
                               nil];

[self.facebook dialog:@"apprequests" andParams:params andDelegate:nil];

1 个答案:

答案 0 :(得分:1)

您需要在accessToken实例上设置expirationDateFacebook属性,以便重复使用其他功能创建的会话。您可以使用NSUserDefaults或类似的机制来保留这些值。

请注意,new version of the Facebook SDK (3.0)有更好的自动会话处理功能。在未来的某个时刻,它可能是强制性的,所以你应该在有机会时切换到它。