2015-07-01 12 views
10

Tôi đang cố triển khai đăng nhập bằng chức năng Facebook, Nhưng tôi nhận được lỗi sau.(com.facebook.sdk.login lỗi 304.) Lỗi với FBSDK 4.2

Login Failed with error: The operation couldn’t be completed. (com.facebook.sdk.login error 304.)

Đây là Mã của tôi

- (void)loginWithFacebook { 
     NSString *const read_actions = @"email"; 

     [[[FBSDKLoginManager alloc] init] 
     logInWithReadPermissions:@[read_actions] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) 
     { 
      if (error) { 
       NSLog(@"Login Failed with error: %@", error.localizedDescription); 
      } 
      else if (result.isCancelled) 
      { 
       NSLog(@"Login Failed due to Cancel"); 
      } 
      else 
      { 
       if ([result.grantedPermissions containsObject:read_actions]) { 
        NSLog(@"Permission granted"); 

       } 
      } 
     }]; 
    } 
+0

Đó là mã công trình tốt tốt cho tôi với phiên bản mới nhất (4.3 kể từ bây giờ) của SDK, nó có lỗi với cùng một thông báo sau khi cập nhật lên phiên bản mới nhất không? Bạn có đang chạy trên thiết bị thực tế hoặc trong trình mô phỏng không? –

Trả lời

4

Dường như tôi đang làm

[FBSDKAccessToken refreshCurrentAccessToken:^(FBSDKGraphRequestConnection *connection, id result, NSError *error){} 

trong một thread nền trong hoạt động đăng nhập. Tôi đã xóa nó và nó hoạt động hoàn toàn tốt.

26

Điều này có thể do mã thông báo đăng nhập trước đó không bị xóa. Trước khi đăng nhập, bạn chỉ cần đăng xuất.

NSString *const read_actions = @"email"; 
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; 
[loginManager logOut]; 
[loginManager logInWithReadPermissions:@[read_actions] 
           handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
            if (error) { 
             NSLog(@"Login Failed with error: %@", error.localizedDescription); 
            } 
            else if (result.isCancelled) { 
             NSLog(@"Login Failed due to Cancel"); 
            } else { 
             if ([result.grantedPermissions containsObject:read_actions]) { 
              NSLog(@"Permission granted"); 
             } 
            } 
           }]; 
+0

Tôi đã thử điều đó nhưng khi mã thông báo truy cập làm mới được gọi ở chế độ nền, hiện tại ,AccessToken đã được đặt lại. Vì vậy, tôi phải dừng chuỗi đó và thêm [loginManager logOut]; trước khi đăng nhập như bạn đã đề cập. –

+0

Cảm ơn bạn đã thông tin, tôi chưa triển khai đăng xuất, vì vậy tôi vừa xóa ứng dụng, xây dựng lại nó và Nó hoạt động. – Nitesh

0

Hãy thử điều này, Nhưng trong nhanh chóng 2 "Thoát trước khi đăng nhập vào nút action login" let đăng nhập: FBSDKLoginManager = FBSDKLoginManager() login.logOut()

1

nhập Thoát người quản lý fblogin khi bạn thực hiện đăng nhập ngay trước khi đăng nhập api như sau: -

fbLoginManager.logOut()

fbLoginManager.logIn(withReadPermissions: ["public_profile","email"], from: self) { (result, error) -> Void in 
1

Swift 4 update:

Mỗi lần bạn thực hiện một cái gì đó giống như này FBSDKLoginManager().login(withReadPermission: ["email"], from: self) { (result, error) in // Check for error and then login } chèn mã này trước khi mã Login: FBSDKLoginManager().logOut() và nó cũng làm việc :)

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