[英]Logout Functionality using Facebook SDK in ios
我已經使用Facebook SDK注銷了Facebook。但是,再次轉到同一帳戶,它在表視圖中顯示兩次值(對於Ex:Prem Kumar。此名稱在單元格中顯示兩次)。
//登錄
- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView
{
// first get the buttons set for login mode
NSLog(@"success");
[HUD showWhileExecuting:@selector(LoadingProcess) onTarget:self withObject:nil animated:YES];
if (FBSession.activeSession.isOpen)
{
NSLog(@"TOKEN : %@",[[FBSession activeSession]accessTokenData]);
FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,location"];
[friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
NSArray *data = [result objectForKey:@"data"];
for (FBGraphObject<FBGraphUser> *friend in data)
{
[delegate.friendsListArray addObject:friend];
NSLog(@"%@:%@:%@", [friend name],[friend birthday],[friend id]);
}
if ([delegate.friendsListArray count]!=0)
{
NSUserDefaults * standardDefaults=[NSUserDefaults standardUserDefaults];
[[NSUserDefaults standardUserDefaults] synchronize];
[standardDefaults setObject:delegate.friendsListArray forKey:@"FriendsListArray"];
[standardDefaults setBool:YES forKey:@"logged_in"];
[standardDefaults synchronize];
NSLog(@"%@",[standardDefaults objectForKey:@"FriendsListArray"]);
BirthdayList * birthdaylist=[[BirthdayList alloc]init];
[self.navigationController pushViewController:birthdaylist animated:NO];
[birthdaylist release];
}
else
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Friends not found" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
[alertView release];
}
}];
}
}
在Settings.m中
-(void)LogoutTapped
{
NSLog(@"Logged out of facebook");
NSUserDefaults * standardDefaults=[NSUserDefaults standardUserDefaults];
[[NSUserDefaults standardUserDefaults] synchronize];
NSArray *keys = [[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]allKeys]copy];
for(NSString *key in keys)
{
[standardDefaults removeObjectForKey:key];
[standardDefaults removeObjectForKey:@"FriendsListArray"];
[standardDefaults removeObjectForKey:@"logged_in"];
[standardDefaults synchronize];
NSLog(@"Key Name: %@", key);
}
[delegate.friendsListArray removeAllObjects];
[keys release];
NSLog(@"%@",[standardDefaults objectForKey:@"FriendsListArray"]);
NSLog(@"%@",[standardDefaults objectForKey:@"logged_in"]);
NSUserDefaults * userinfodefaults=[NSUserDefaults standardUserDefaults];
NSArray *userkeys = [[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]allKeys]copy];
for(NSString *userkey in userkeys)
{
[userinfodefaults removeObjectForKey:userkey];
[userinfodefaults removeObjectForKey:@"userinfo"];
[userinfodefaults removeObjectForKey:@"userbool"];
NSLog(@"key1 Name: %@",userkey);
}
[delegate.UserListArray removeAllObjects];
[delegate.Setmonthdataarray removeAllObjects];
[delegate.SetMonthlistarray removeAllObjects];
[userinfodefaults synchronize];
[userkeys release];
FBSession *session=[FBSession activeSession];
[session closeAndClearTokenInformation];
[session close];
[[FBSession activeSession] closeAndClearTokenInformation];
[[FBSession activeSession] close];
[FBSession setActiveSession:nil];
[delegate facebook].accessToken=nil;
[delegate 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];
}
for (NSHTTPCookie *_cookie in cookies.cookies)
{
NSRange domainRange = [[_cookie domain] rangeOfString:@"facebook"];
if(domainRange.length > 0){
[cookies deleteCookie:_cookie];
}
}
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Logout" message:@"Logout Successfully" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
MainList * mainlist=[[MainList alloc]initWithNibName:@"MainList" bundle:nil];
[self.navigationController pushViewController:mainlist animated:NO];
[mainlist release];
}
還有一個疑問。
要登錄facebook,我使用了Facebook SDK。
要注銷Facebook,我使用了Facebook庫。(Facebook.m,Facebook.h)
有什么問題嗎?
任何想法請幫助我。
以下代碼可能對您有幫助:
-(void) fbDidLogout
{
NSLog(@"Logged out of facebook");
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];
}
}
}//
根據您的情況,我假設您的設備未安裝Facebook應用,也不希望使用iOS 6系統身份驗證,這將使默認登錄行為保留為使用Safari。 如果您要清除Safari cookie,這應該可以工作,但是為了使您的場景更流暢,請使用FBSession openWithBehavior:completionHandler:
方法並指定FBSessionLoginBehaviorForcingWebview
的行為,以便它使用內聯Webview對話框進行身份驗證。
有關示例,請參閱Facebook iOS SDK中的SwitchUserSample,因為該示例演示了可以在多個帳戶之間切換的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.