2012-02-02 41 views
6

Chúng tôi đã gặp vấn đề đăng xuất đăng nhập facebook trên iOS. Khi tôi đăng nhập vào facebook bằng ứng dụng của mình, nó sẽ nhắc người dùng cho phép với nút 'đăng nhập' và 'hủy'. Nhưng màn hình này chỉ xuất hiện lần đầu tiên. tức là khi chúng tôi đăng nhập bằng safari hoặc ứng dụng và ngay cả khi chúng tôi đăng xuất khỏi facebook, ứng dụng nhắc màn hình cho phép người dùng chỉ hiển thị nút 'ok'. Nó không cho phép đăng nhập với tư cách người dùng khác. Tại sao màn hình với nút 'đăng nhập' và 'hủy' không hiển thị mỗi khi ứng dụng khởi chạy? Tôi đã thử bằng cách xóa cookie và xóa NSUserDefaults nhưng không may mắn.Đăng xuất Sự cố đăng xuất bằng facebook iOS sdk

Vấn đề là sau khi đăng xuất, tôi không thể đăng nhập vào facebook với tư cách người dùng khác. Nó vẫn hiển thị như cùng một người dùng.

Tôi gọi hàm logout dưới đây trong sdk

(void)logout:(id<FBSessionDelegate>)delegate { 

    self.sessionDelegate = delegate; 
[_accessToken release]; 
_accessToken = nil; 
[_expirationDate release]; 
_expirationDate = nil; 

NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
NSArray* facebookCookies = [cookies cookiesForURL: 
[NSURL URLWithString:@"http://login.facebook.com"]]; 
for (NSHTTPCookie* cookie in facebookCookies) { 
    [cookies deleteCookie:cookie]; 
} 

if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogout)]) { 
    [_sessionDelegate fbDidLogout]; 
} 
} 

Cũng trong chức năng đại biểu fbDidLogout Tôi đã gỡ bỏ tất cả NSUserDefaults đối tượng

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if ([defaults objectForKey:@"FBAccessTokenKey"]) { 
    [defaults removeObjectForKey:@"FBAccessTokenKey"]; 
    [defaults removeObjectForKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 
} 

regrds Shihab

+0

bạn có thể viết cách triển khai phương thức đăng xuất của mình và bạn sử dụng đại biểu nào không? có lẽ tôi có thể giúp bạn, tôi đã đấu tranh với facebook là tốt. –

+0

ảnh chụp màn hình của bạn ở đâu ?? –

+0

Xin lỗi, tôi không thể đính kèm ảnh chụp màn hình. Vấn đề tôi đang đối mặt là ngay cả sau khi đăng xuất khỏi ứng dụng của tôi, tôi không thể đăng nhập với tư cách người dùng khác. Tôi hy vọng rằng, sau khi đăng xuất, khi tôi đang cố gắng đăng nhập vào hệ thống một lần nữa, sẽ có một liên kết để đăng xuất khỏi cửa sổ mật khẩu tên người dùng facebook. Tôi đã thấy giống nhau trong một số ứng dụng Facebook của iOS. – user867662

Trả lời

4

FBSession openWithBehavior: completionHandler: có thể được sử dụng ..

FBSession *fbSession = [[FBSession alloc] initWithPermissions:[NSArray arrayWithObjects:@"email",@"publish_actions",@"publish_stream", nil]]; 
[fbSession openWithBehavior:FBSessionLoginBehaviorForcingWebView completionHandler:^(FBSession *session,FBSessionState state, NSError *error){ 
    [FBSession setActiveSession:fbSession]; // Retain the Active Session.   
}]; 

Đối Đăng xuất, Ans bởi Ellen S .. làm việc tốt cho iOS.

+0

Hi i có một số vấn đề tôi có cùng một vấn đề đăng xuất của tôi được thực hiện thành công bởi tôi không thể có được màn hình đăng nhập cho người dùng mới –

5

tôi sửa đổi fbDidLogout phương pháp và nó đã hoạt động, đây là mã số:

-(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]; 
     } 
    } 
}//End of Method 

Phương thức thành công đăng xuất người dùng. Hy vọng điều này sẽ hữu ích!

2

Tôi chỉ tìm ra các cài đặt của iPhone và nhận bảo mật đã chọn tab Facebook và tắt vị trí nói Ứng dụng yêu cầu quyền truy cập vào tài khoản Facebook của bạn sẽ xuất hiện tại đây. Nó hoạt động !!!

7

Bạn có thể xóa phiên cũng như xóa cookie với đoạn mã sau:

FBSession* session = [FBSession activeSession]; 
[session closeAndClearTokenInformation]; 
[session close]; 
[FBSession setActiveSession:nil]; 

NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"https://facebook.com/"]]; 

for (NSHTTPCookie* cookie in facebookCookies) { 
    [cookies deleteCookie:cookie]; 
} 
+0

Nếu bạn đang sử dụng iOS, bạn không cần phải đóng phiên và đặt hoạt động phiên để nil khi bạn đã đóngAndClearTokenInformation. Bạn sẽ phải bấm hai lần để đăng nhập trong trường hợp bạn làm như vậy. –

+0

Đồng ý với @AtifImran. Chỉ 'closeAndClearTokenInformation' thực hiện công việc. – Alex

0

Khi đăng nhập để đặt thành đăng nhậpBehavior, vì vậy khi bạn thoát, với thông tin đăng nhập tài khoản khác, sẽ không xuất hiện chỉ được ủy quyền, mà không có màn hình đăng nhập login.loginBehavior = FBSDKLoginBehaviorWeb; tôi sử dụng facebook 4.11, nó hoạt động

Các vấn đề liên quan