Hot*_*ama 3 session facebook objective-c ios
我正在使用Facebook iOS 4.0创建一个iOS应用程序,使用FBSDKLoginButton视图类的简单Facebook登录对话框.
在上次成功登录后启动应用程序时,该按钮正确显示为"已登录"状态,即显示文本"注销".
但是,这[FBSDKAccessToken currentAccessToken]是nil,这就是为什么我的应用程序不知道活动会话,因此不会使用数据填充FB相关字段.
由于FBSessionFB iOS SDK4.0不再存在该类,因此如何正确确定缓存会话是否存在?
我认为这[FBSDKAccessToken currentAccessToken]是做到这一点的方法.但是,如上所述,currentAccessToken没有设置...任何想法为什么它可能是零,或如何正确检测活动/缓存会话?
编辑:我已将调用放在我的主视图控制器currentAccessToken的viewDidLoad方法中,其中包含Facebook登录对话框广告按钮.不幸的是,如上所述,currentAccessToken为零.任何建议为什么它不可用?
EDIT2:BIGMAN解决了这个问题(见他在下面他的回答评论):获取currentAccessToken的viewDidAppear,而不是viewDidLoad做的伎俩.
所以我自己就碰到了这个.
目标:在应用启动时,如果已经从先前成功登录尝试获取了令牌,请执行一些替代逻辑(在我的情况下,直接启动到不同的视图控制器).
这里的关键是Dheeraj最初提出的.
[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
Run Code Online (Sandbox Code Playgroud)
你呼叫他们的共享代表的那一刻,就是他们唤醒一切.所以代码示例.这可能是一个非常糟糕的做法,我不确定,这就是我如何让它发挥作用.
- (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;
}
Run Code Online (Sandbox Code Playgroud)
假设您之前已经成功登录过一次,您应该在第二个日志输出上看到您的访问令牌.希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
3520 次 |
| 最近记录: |