ios - 在 Facebook iOS SDK v4.0 中对应用程序启动时的事件 session 进行可靠检查

标签 ios objective-c facebook session

我正在使用 Facebook iOS SDK 4.0 创建一个 iOS 应用程序,使用带有 FBSDKLoginButton View 类的简单 Facebook 登录对话框。

在上一次成功登录后启动应用程序时,按钮正确显示为“已登录”状态,即显示文本“注销”。

但是,[FBSDKAccessToken currentAccessToken] 为 nil,这就是为什么我的应用程序不知道事件 session ,因此不会用数据填充与 FB 相关的字段。

由于FBSession类在FB iOS SDK4.0中已经不存在了,如何才能正确判断是否存在缓存的session呢?

我假设 [FBSDKAccessToken currentAccessToken] 是实现它的方法。但是,如前所述,currentAccessToken 未设置...知道为什么它可能为零,或者如何正确检测事件/缓存 session 吗?

编辑:我已将对 currentAccessToken 的调用放在我的主视图 Controller 的 viewDidLoad 方法中,其中包含 Facebook 登录对话框广告按钮。不幸的是,如上所述,currentAccessToken 为 nil。为什么它不可用有什么建议吗?

EDIT2:Bigman 解决了这个问题(请参阅他在下面的回答中的评论):在 viewDidAppear 而不是 viewDidLoad 中获取 currentAccessToken 做了把戏。

最佳答案

所以我自己遇到了这个。

目标:在应用启动时,如果已经从之前成功的登录尝试中获取了 token ,则执行一些替代逻辑(在我的例子中,直接启动到不同的 View Controller )。

这里的关键是 Dheeraj 最初提出的内容。

[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];

您调用他们的共享代表的那一刻,就是他们唤醒一切的时候。所以代码示例。这可能是一个非常糟糕的做法,我不确定,这就是我让它工作的方式。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [FBSDKLoginButton class];
  [FBSDKProfile enableUpdatesOnAccessTokenChange:YES];
  NSLog(@"What the heck, no token? %@", [FBSDKAccessToken currentAccessToken]);
  //Output: What the heck, no token? (nil)
  BOOL fbDidFinish = [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
  NSLog(@"Hey! My Token! %@", [FBSDKAccessToken currentAccessToken]);
  //Output: Hey! My Token! <FBSDKAccessToken: 0x7fddf8d136a0>
  //Your address in memory will be different
  //At this point, you can do additional logic based on having the Token, like skipping ahead to a different ViewController
  return fbDidFinish;
}

假设您之前已经成功登录过一次,您应该会在第二个日志输出中看到您的访问 token 。希望这会有所帮助。

关于ios - 在 Facebook iOS SDK v4.0 中对应用程序启动时的事件 session 进行可靠检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29422437/

相关文章:

ios - 如何在 appcelerator ios 中实现自定义转换

ios - 带有部分和搜索字段的 UITableView

用于共享的 Facebook API 返回空结果集

facebook - Facebook,允许应用程序仅管理一页

ios - 是否可以在场景套件中的半透明对象后面渲染粒子?

ios - 如何显示 View Controller : UIImagePickController and dismiss it (Swift)

ios - 这个返回参数是什么意思?

facebook - 在 Javascript SDK 中处理 Facebook 访问 token 过期

iOS Google Analytics 在启动时随机崩溃

ios - 无法从 UIWebView 完全回收内存使用