Подтвердить что ты не робот

(ошибка com.facebook.sdk.login 304.) Ошибка с FBSDK 4.2

Я пытаюсь реализовать логин с функциями Facebook, но я получаю следующую ошибку в ответ.

Вход с ошибкой: операция не может быть завершена. (ошибка com.facebook.sdk.login 304.)

Вот мой код

    - (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");

                 }
             }
         }];
    }
4b9b3361

Ответ 1

Кажется, я делал

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

в фоновом потоке во время входа в систему. Я удалил это, и он работал отлично.

Ответ 2

Это может быть связано с тем, что предыдущий токен входа не очищен. Поэтому до входа в систему просто выйти из системы.

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");
                                        }
                                   }
                               }];

Ответ 3

Обновление Swift 4:

Каждый раз, когда вы выполняете что-то вроде этого

    FBSDKLoginManager().login(withReadPermission: ["email"], from: self) { (result, error) in  // Check for error and then login }
    //insert this code before the **Login code:** 
    FBSDKLoginManager().logOut()

и все должно работать нормально :)

Ответ 4

Попробуйте это, но его в быстрой 2 "Выход из системы перед входом в систему входа в систему" ​​      let login: FBSDKLoginManager = FBSDKLoginManager()       login.logOut()

Ответ 5

Выйдите из менеджера fblogin, чтобы выполнить действие, которое вы выполняете, перед тем как API входа будет выглядеть так:

fbLoginManager.logOut()
fbLoginManager.logIn(withReadPermissions: ["public_profile","email"], from: self) { (result, error) -> Void in 
    //Your code here
}

Ответ 6

Обновление Swift 5 :
Просто обновите свой accessToken или выйдите из системы.

func loginButtonClicked() {
            let loginManager = LoginManager()
            loginManager.logOut()
            loginManager.logIn(permissions: [.email], viewController: nil) { (loginResult) in
                switch loginResult {
                case .success(let grantedPermissions, _, let token):
                    self.returnUserData()
                    print("Success",token,grantedPermissions)
                    break
                case .cancelled:

                    print("Cancel")
                    break
                case .failed(let error):

                    print(error.localizedDescription)
                    break
                }
            }


        }