тест приложения facebook для всех

Я создал приложение для фейсбука. Я проверил это в sandbox mode, и все в порядке.

Теперь я хочу, чтобы другие люди протестировали это приложение на мобильном телефоне, поэтому я закрыл sandbox mode и обнаружил, что iPhone-5 пользователь не может войти в систему, но оно все еще работает нормально на android телефоне.

Вот журнал ошибок -

ошибка создания сеанса: Error Domain = com.facebook.sdk Code = 2 «Операция не может быть завершена (ошибка com.facebook.sdk 2.)» UserInfo = 0x16561ad0

Я проверил свои bundle id и app id, все в порядке.


person 曾茂嘉    schedule 03.09.2013    source источник
comment
Извините, я забыл сказать, что использую плагин для социальных сетей Prime31.   -  person 曾茂嘉    schedule 03.09.2013
comment
Удаляю пользователя в настройках айфона -> фейсбук и дальше нормально Почему так произошло   -  person 曾茂嘉    schedule 03.09.2013


Ответы (2)


Это сработало для меня:

Перейдите в приложение настроек вашего iPhone. Откройте настройки Facebook. Прокрутите вниз до своего приложения и убедитесь, что оно разрешает взаимодействие с Facebook. Это может произойти на любом устройстве, поэтому в вашем приложении вы должны правильно обработать эту ошибку. Я полагаю, что вы даете пользователю обратную связь, почему авторизация через Facebook не удалась, и просите пользователя проверить свои настройки Facebook на своем устройстве.

- (void)facebookSessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error{       switch (state) {
    case FBSessionStateOpen:
        // handle successful login here
    case FBSessionStateClosed:
    case FBSessionStateClosedLoginFailed:
        [FBSession.activeSession closeAndClearTokenInformation];

        // handle error here, for example by showing an alert to the user
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Could not login with Facebook"
                                                        message:@"Facebook login failed. Please check your Facebook settings on your phone."
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alert show];

        break;
    default:
        break;
}
person sKhan    schedule 03.09.2013

Я использовал следующий способ, и он работает для меня:

-(void)openFacebookAuthentication
{
    NSArray *permission = [NSArray arrayWithObjects:kFBEmailPermission,kFBUserPhotosPermission,kFBUserPublicPermission,kFBUserLikePermission, nil];

    FBSession *session = [[FBSession alloc] initWithPermissions:permission];
    [FBSession setActiveSession: [[FBSession alloc] initWithPermissions:permission]];
    [[FBSession activeSession] openWithBehavior:FBSessionLoginBehaviorForcingWebView completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
        switch (status) {
            case FBSessionStateOpen:
                [self likeFaceBook];
                break;
            case FBSessionStateClosedLoginFailed: {
                // prefer to keep decls near to their use
                // unpack the error code and reason in order to compute cancel bool
                NSString *errorCode = [[error userInfo] objectForKey:FBErrorLoginFailedOriginalErrorCode];
                NSString *errorReason = [[error userInfo] objectForKey:FBErrorLoginFailedReason];
                BOOL userDidCancel = !errorCode && (!errorReason || [errorReason isEqualToString:FBErrorLoginFailedReasonInlineCancelledValue]);
                if(error.code == 2) {
                    UIAlertView *errorMessage = [[UIAlertView alloc] initWithTitle:kFBAlertTitle
                                                                           message:kFBAuthenticationErrorMessage
                                                                          delegate:nil
                                                                 cancelButtonTitle:kOk
                                                                 otherButtonTitles:nil];
                    [errorMessage performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
                    errorMessage = nil;
                }
            }
                break;
                // presently extension, log-out and invalidation are being implemented in the Facebook class
            default:
                break; // so we do nothing in response to those state transitions
        }
    }];
    permission = nil;
}
person Rigel Networks    schedule 03.09.2013
comment
спасибо за помощь я проверяю настройки телефона -> facebook я не вижу своего приложения в списке кажется что-то не так? - person 曾茂嘉; 03.09.2013