Facebook Connect iPhone API注销不工作
我正在尝试在我正在开发的iPhone应用程序中编写Facebook集成。我已经很好地登录了它,但是我不喜欢这样的想法:能够打开一个功能而不能关闭它。因此,在开发注销功能时,我遇到了一个障碍Facebook Connect iPhone API注销不工作,iphone,objective-c,facebook,Iphone,Objective C,Facebook,我正在尝试在我正在开发的iPhone应用程序中编写Facebook集成。我已经很好地登录了它,但是我不喜欢这样的想法:能够打开一个功能而不能关闭它。因此,在开发注销功能时,我遇到了一个障碍 - (IBAction) logoutClicked:(id)sender { if (fbLoggedIn) { FBSession * mySession = [FBSession session]; [mySession logout]; } }
- (IBAction) logoutClicked:(id)sender {
if (fbLoggedIn)
{
FBSession * mySession = [FBSession session];
[mySession logout];
}
}
- (void)sessionDidLogout:(FBSession*)session
{
NSLog(@"Session logged out.");
[theLoginButton setTitle:@"Facebook Time!" forState:UIControlStateNormal];
fbLoggedIn = FALSE;
theLogoutButton.enabled = NO;
theLogoutButton.alpha = 0;
}
logoutClicked方法响应我的xib中的一个按钮。未调用委托方法。我尝试将Facebook会话设置为ViewController中的属性,以便跨方法存储/访问数据,但这似乎也不起作用。有人有任何解决方案吗?SessiondLogout是在实现FBSessionDelegate的类中实现的吗?
在使用[FBSession sessionForApplication:@XXX secret:@YYY delegate:delegate]方法创建会话时,它是作为委托传递的类的实例吗?将此代码用于注销。我从这里得到这个 这对我很有用:
(void)logout {
//self.sessionDelegate = delegate;
appDelegate.facebook.accessToken = nil;
appDelegate.facebook.expirationDate = nil;
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];
for (NSHTTPCookie* cookie in facebookCookies) {
[cookies deleteCookie:cookie];
}
NSLog(@"Log out");
// Remove saved authorization information if it exists
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if ([userDefaults objectForKey:@"FBAccessTokenKey"]) {
[userDefaults removeObjectForKey:@"FBAccessTokenKey"];
[userDefaults removeObjectForKey:@"FBExpirationDateKey"];
[userDefaults synchronize];
}
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
NSString* domainName = [cookie domain];
NSRange domainRange = [domainName rangeOfString:@"facebook"];
if(domainRange.length > 0)
{
[storage deleteCookie:cookie];
}
}
}
(void)logout {
//self.sessionDelegate = delegate;
appDelegate.facebook.accessToken = nil;
appDelegate.facebook.expirationDate = nil;
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];
for (NSHTTPCookie* cookie in facebookCookies) {
[cookies deleteCookie:cookie];
}
NSLog(@"Log out");
// Remove saved authorization information if it exists
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if ([userDefaults objectForKey:@"FBAccessTokenKey"]) {
[userDefaults removeObjectForKey:@"FBAccessTokenKey"];
[userDefaults removeObjectForKey:@"FBExpirationDateKey"];
[userDefaults synchronize];
}
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
NSString* domainName = [cookie domain];
NSRange domainRange = [domainName rangeOfString:@"facebook"];
if(domainRange.length > 0)
{
[storage deleteCookie:cookie];
}
}
}