我正在执行以下代码以从我的iPhone应用程序注销Facebook:
if ([mFacebook isSessionValid]) {
[mFacebook logout];
}
此代码成功运行,并在此之后调用委托,我将清除访问令牌:
- (void)fbDidLogout
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
但是当我再次登录Facebook时,它不会要求输入用户名和密码。
我做错了什么?
答案 0 :(得分:4)
您使用的是FB移动登录对话框吗?在Facebook.m中,添加以下代码以删除m.facebook.com域中的cookie。
- (void)invalidateSession {
...
NSArray* facebookMCookies = [cookies cookiesForURL:
[NSURL URLWithString:@"https://m.facebook.com"]];
for (NSHTTPCookie* cookie in facebookMCookies) {
[cookies deleteCookie:cookie];
}
...
}
答案 1 :(得分:2)
尝试在fbDidLogout块的末尾添加这些:
mFacebook.accessToken = nil;
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];
}
}
答案 2 :(得分:0)
试试这段代码:
- (void) fbDidLogout {
// Remove saved authorization information if it exists
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]) {
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
}
不要忘记在AppDelegate中为facebook.h
创建一个实例。
答案 3 :(得分:0)
只需将此行添加到 fbDidLogout 方法
即可[mFacebook invalidateSession];
这肯定会让你从Facebook退出。
答案 4 :(得分:0)
尝试从Facebook应用程序注销。它可能只是从Facebook应用程序中获取令牌。