Ошибка авторизации через родное приложение facebook - PullRequest
0 голосов
/ 19 января 2019

При попытке войти в систему с помощью приложения Facebook SDK возвращает ошибку:

Ошибка Домен = NSPOSIXErrorDomain Code = 53 "Программное обеспечение вызвало прерывание соединения" UserInfo = {_ kCFStreamErrorCodeKey = 53, _kCFStreamErrorDomainKey = 1}

Ошибка не воспроизводится в случае авторизации через Safari, только через приложение и не каждый раз.

Мой код:

- (IBAction)loginFacebook:(UIButton *)sender
{
     FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
     [login logOut];
     [login
     logInWithReadPermissions: @[@"public_profile",@"email"]
     fromViewController:self
     handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        if (error) {
           [self showError:error];
        } else if (result.isCancelled) {
           NSLog(@"Cancelled");
        } else {
           [LoadingView startLoading:@"" inView:[[UIApplication sharedApplication].delegate window] isProgress:NO showWithCheckmark:NO];
           [[BackendService sharedBackendService] fbLoginWithAccessToken:result.token.tokenString successBlock:^() {
                [_errorView removeFromSuperview];
                 _errorView = nil;
                 STOP_LOADING
                [self showMainVC];
             } errorBlock:^(NSError *error) {
                 STOP_LOADING
             [self showError:error];
         }];
      }
   }];
}

1 Ответ

0 голосов
/ 19 января 2019

Решил проблему таким способом.Возможно, кому-то еще пригодится в будущем.Мне помогла минимальная задержка обновления.Вот пример:

- (IBAction)loginFacebook:(UIButton *)sender
{
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    [login logOut];
    [login
     logInWithReadPermissions: @[@"public_profile",@"email"]
     fromViewController:self
    handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {

        if (error) {
            [self showError:error];
        } else if (result.isCancelled) {
            NSLog(@"Cancelled");
        } else {

         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{

             [LoadingView startLoading:@"" inView:[[UIApplication sharedApplication].delegate window] isProgress:NO showWithCheckmark:NO];
             [[BackendService sharedBackendService] fbLoginWithAccessToken:result.token.tokenString successBlock:^() {
                 [_errorView removeFromSuperview];
                 _errorView = nil;
                 STOP_LOADING
                 [self showMainVC];
             } errorBlock:^(NSError *error) {
                 STOP_LOADING
                 [self showError:error];
             }];

         });

     }
 }];

}

...