我的目标是在我的应用程序中创建一个邀请 friend 的请求按钮。
问题是它要求我登录。这通常不会成为问题,但在这种情况下,用户已经将他们的登录信息输入到 Facebook,以便在应用程序中执行另一项功能。该功能是由当前不可用的其他人编写的。
最终发生的是用户必须登录两次。一次使用其他人的功能,一次使用请求对话框。我需要以某种方式共享凭据/授权/ session ,这样我就不会提示用户登录两次。
我没有看到要在标准应用请求对话框代码中传递任何参数来预授权尝试。我想我可以用 Facebook 对象做些什么。另外,我对 Objective C 很陌生,所以我对委托(delegate)的理解真的很薄弱。我一直在看它,但我不知道 facebook 对象作为委托(delegate)需要什么样的功能。我的理解是 facebook 可以回调委托(delegate),本质上是给出一个异步的 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];
最佳答案
您需要在 Facebook
实例上设置 accessToken
和 expirationDate
属性,以便重用由其他功能创建的 session .您可以使用 NSUserDefaults
或类似机制保留这些值。
请注意,有一个 new version of the Facebook SDK (3.0)具有更好的自动 session 处理。在未来的某个时候,它可能是强制性的,因此您应该在有机会时切换到它。
关于ios - 你如何预授权一个 facebook 对话框——比如一个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12375150/