【发布时间】:2011-05-11 13:45:47
【问题描述】:
一段时间以来,我一直在寻找看似简单的问题的解决方案,但没有运气。登录代码如下。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [facebook handleOpenURL:url];
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [prefs stringForKey:@"facebook-accessToken"];
NSDate *expirationDate = [prefs objectForKey:@"facebook-expirationDate"];
facebook.accessToken = accessToken;
facebook.expirationDate = expirationDate;
if ([facebook isSessionValid]) {
NSLog(@"valid session");
}
else {
NSLog(@"NOT VALID");
[facebook authorize:nil delegate:self];
}
}
- (void)fbDidLogin {
NSLog(@"delegate method");
NSString *accessToken = facebook.accessToken;
NSDate *expirationDate = facebook.expirationDate;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:accessToken forKey:@"facebook-accessToken"];
[prefs setObject:expirationDate forKey:@"facebook-expirationDate"];
[prefs synchronize];
}
我的 rootViewController 中有一个 Type Facebook 属性和一个注销按钮。我将 facebook 实例传递给 rootViewController,然后尝试按如下方式注销。
-(IBAction) logout {
[facebook logout:self];
}
- (void)fbDidLogout {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:nil forKey:@"facebook-accessToken"];
[prefs setObject:nil forKey:@"facebook-expirationDate"];
[prefs synchronize];
}
它有点工作......例如。当我不注销时,即使在正确关闭应用程序后(按住图标然后按 x),我也可以重新启动应用程序,并且用户无需执行任何操作即可登录。但是当我注销时,下次启动该应用程序时,用户没有机会重新输入登录详细信息,而只是得到一个 Facebook 页面,上面写着“您已经授权此应用程序使用 facebook”??
有谁知道我现在是不是走错了路,因为这真的让我很烦?
非常感谢
朱尔斯
【问题讨论】:
-
这里的类似情况.. facebook 从应用程序/sdk 注销成功,但它的会话仍在 safari 插件中...如果我再次登录,则表明已经登录只是确认权限
标签: iphone cocoa-touch facebook