我在另一個項目上使用了Facebook Connect,但是在我目前的項目中,似乎當我撥打[facebook logout];
時,它並沒有刪除用戶的詳細信息。如果我再重新啓動應用程序,我在didFinishLaunchingWithOptions功能如下:iOS - Facebook連接註銷不刪除登錄細節?
facebook = [[Facebook alloc] initWithAppId:@"XXXXXXXXXXXXX" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]){
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
NSLog(@"startup login");
[self loginToFacebook];//attempt to login automatically on startup
我loginToFacebook功能是這樣的:
- (void)loginToFacebook
{
NSLog(@"Logging into facebook");
//set up facebook and login in automatically if possible
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]){
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![facebook isSessionValid]){
//get permissions that user will need to agree to us using
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_likes",@"read_friendlists",@"offline_access", @"publish_stream",
nil];
//authorise our login
[facebook authorize:permissions];
[permissions release];
}
else
{
[facebook authorize:nil];
}
}
就我而言,這個時候我應該會提示用我的電子郵件和密碼登錄。 我主要使用模擬器使Facebook的應用程序本身不是原因,並在Facebook.h類我已經改變了
[self authorizeWithFBAppAuth:NO safariAuth:YES];
到
[self authorizeWithFBAppAuth:NO safariAuth:NO];
但是什麼情況是,Facebook的窗口短暫地閃爍並消失,正如我預期的那樣,當我已經登錄時,它會從我之前的登錄詳細信息中加載我的ID,姓名,朋友列表等。我不能再改變用戶了!我要補充一點,我有以下的代碼,因此打印在「註銷」:
- (void)fbDidLogout{
NSLog(@"Logged out of facebook");
}
...它打印到控制檯時,[Facebook的註銷]被調用。我也有正確的網址方案,所以這裏沒有問題。
正如我所說我已經在另一個應用程序的工作,但我看不出我可以忽略這一次。 我歡迎任何建議,因爲我懷疑這簡直太荒唐了。
編輯:我剛剛在設備上進行了測試,嘗試登錄到Facebook導致應用程序崩潰。我懷疑這是因爲它試圖使用「存儲」信息登錄,因爲我尚未登錄設備,所以信息不存在。我仍在調查,但如果有的話,如果有任何可以看到明顯的缺陷,我會非常感激。
編輯2:我試過用safecase的例子刪除cookie。期間)didFinishLaunchingWithOptions和b)fbDidLogout期間我還打印出所有的餅乾,而我得到如下:
一) `2012-05-18 10:40:40.665 MyApp的[15545:17003( 「」
"<NSHTTPCookie version:0 name:\"c_user\" value:\"634361620\" expiresDate:2012-06-17 09:34:33 +0000 created:2012-05-18 09:34:34 +0000 (3.59026e+08) sessionOnly:FALSE domain:\".facebook.com\" path:\"/\" isSecure:TRUE>",
"<NSHTTPCookie version:0 name:\"csm\" value:\"2\" expiresDate:2012-06-17 09:34:33 +0000 created:2012-05-18 09:34:34 +0000 (3.59026e+08) sessionOnly:FALSE domain:\".facebook.com\" path:\"/\" isSecure:FALSE>",
"<NSHTTPCookie version:0 name:\"datr\" value:\"gxe2T8ZyBzMGb5w3LS29Q0kJ\" expiresDate:2014-05-18 09:34:33 +0000 created:2012-05-18 09:34:34 +0000 (3.59026e+08) sessionOnly:FALSE domain:\".facebook.com\" path:\"/\" isSecure:FALSE>",
"<NSHTTPCookie version:0 name:\"locale\" value:\"en_US\" expiresDate:2012-05-25 09:36:43 +0000 created:2012-05-18 09:36:44 +0000 (3.59027e+08) sessionOnly:FALSE domain:\".facebook.com\" path:\"/\" isSecure:FALSE>",
"<NSHTTPCookie version:0 name:\"lu\" value:\"RgayA7CMIlsAl-lOD2-Y-O3g\" expiresDate:2014-05-18 09:34:33 +0000 created:2012-05-18 09:34:34 +0000 (3.59026e+08) sessionOnly:FALSE domain:\".facebook.com\" path:\"/\" isSecure:FALSE>",
"<NSHTTPCookie version:0 name:\"m_user\" value:\"0%3A0%3A0%3A0%3Av_1%2Cajax_1%2Cwidth_320%2Cpxr_1%2Cgps_1%3A1337333673%3A2\" expiresDate:2012-08-16 09:34:33 +0000 created:2012-05-18 09:34:34 +0000 (3.59026e+08) sessionOnly:FALSE domain:\".facebook.com\" path:\"/\" isSecure:FALSE>",
"<NSHTTPCookie version:0 name:\"s\" value:\"Aa4WdKU-oOFathmK\" expiresDate:2012-06-17 09:34:33 +0000 created:2012-05-18 09:34:34 +0000 (3.59026e+08) sessionOnly:FALSE domain:\".facebook.com\" path:\"/\" isSecure:TRUE>",
"<NSHTTPCookie version:0 name:\"xs\" value:\"125%3AFFIWXjAXDXUMmw%3A2%3A1337333673\" expiresDate:2012-06-17 09:34:33 +0000 created:2012-05-18 09:34:34 +0000 (3.59026e+08) sessionOnly:FALSE domain:\".facebook.com\" path:\"/\" isSecure:TRUE>"
)`
b) 2012-05-18 10:41:16.530 MyApp[15545:17003] ( )
由於它變爲空,我會假設它們將被刪除。但重新打開應用程序時,他們都在那裏。
編輯3:解決這個問題的唯一方法是在應用程序打開時立即刪除所有的cookies,但這意味着用戶每次都必須登錄,即使他們自己上次登錄時也是如此應用已打開。這是暫時的修復,我仍然不確定它爲什麼不能按原樣工作。
根本沒有什麼區別,我很害怕。 facebook類已經在它的invalidateSession函數中包含了cookie的移除,這在[facebook註銷]中被調用。我仍然嘗試將代碼明確地添加到我的fbDidLogout函數中,但問題仍然存在。 – TheBestBigAl
將此代碼添加到我的代碼的開頭,因此每次啓動時都會擦除登錄詳細信息。不理想,但它現在起作用。 – TheBestBigAl
太棒了!對我來說就像魔術一樣 –