2014-03-28 6 views
2

내 응용 프로그램에서 quickblox를 사용하고 있습니다. 내 사용자 가입, 사용자 로그인 및 채팅을했습니다. 처음 로그인 할 때 모든 것이 잘 작동합니다. 집에 가서 앱을 다시 입력하면 viewController 페이지로 이동합니다. 사용자가 자동으로 로그 아웃됩니다. 로그인을 시도하면 토큰이 필요합니다.Quicklox 토큰이 필요합니다

나는 닫히지 소켓을 보인다 appdelegate

[QBAuth createSessionWithDelegate:self] 
    -(void)viewDidAppear:(BOOL)animated 
    { 

    if([LocalStorageService shared].currentUser == nil)// check if user is logged in 
    { 
     NSCharacterSet *nonalphanumericSet = [[ NSCharacterSet alphanumericCharacterSet] invertedSet]; 

     [QBUsers logInWithUserLogin:[[[PFUser currentUser].username componentsSeparatedByCharactersInSet:nonalphanumericSet ] componentsJoinedByString:@"1"] password:@"password" delegate:self]; 
    } 
    } 

    - (void)completedWithResult:(Result *)result 
    { 
    if(result.success && [result isKindOfClass:QBUUserLogInResult.class]) 
    { 
     // Success, do something 
     QBUUserLogInResult *userResult = (QBUUserLogInResult *)result; 
     NSLog(@"Logged In user=%@", userResult.user); 


      userResult.user.password [email protected]"password"; 

     // Save current user 
     // 
     [[LocalStorageService shared] setCurrentUser: userResult.user]; 


     // Login to QuickBlox Chat 
     // 
     [[ChatService instance] loginWithUser:[LocalStorageService shared].currentUser completionBlock:^{ 

      NSLog(@"chat logged successfully"); 


     }]; 

     // Errors 
    } 
    else 
    { 
     NSString *errorMessage = [[result.errors description] stringByReplacingOccurrencesOfString:@"(" withString:@""]; 
     errorMessage = [errorMessage stringByReplacingOccurrencesOfString:@")" withString:@""]; 

     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Errors" 
                 message:errorMessage 
                 delegate:nil 
               cancelButtonTitle:@"Ok" 
               otherButtonTitles: nil]; 
     [alert show]; 

    } 

} 

답변

1

토큰이 당신이 요청을 수행하려고하는 것을 의미 필요한 90 초 만에 종료됩니다,하지만 당신은 여전히 ​​

를 세션을 생성하지 않았다 당신이 세션 REQ를 만들 때 기다려야한다

이 제거하려면 '토큰이 필요합니다'얻었다 것이 순서 후

[QBAuth createSessionWithDelegate:self]; 
[QBUsers logInWithUserLogin:... delegate:self]; 

: 당신은이 개 요청을 하나씩 수행이 문제를 재현 할 수 있습니다

- (void)completedWithResult:(Result *)result{ 
    if(result.success && [result isKindOfClass:QBAAuthSessionCreationResult.class]){ 

     // you got token here - perform any other requests after this 

     [QBUsers logInWithUserLogin:... delegate:self]; 

    } 
} 

그것은 당신의 문제에 대한 해결책이 아니다, 그러나 그것은 happenes 설명 숨바꼭질 그리고 그것을

+0

고맙습니다를 해결하는 방법을 ...

[QBAuth createSessionWithDelegate:self]; 

: uests는 완성하고 다음 요청을 수행합니다 이고르. 나는 이미 그것을 분류했다. 그리고 이것은 그 것이었다. –

0

에서 세션 인증을 뒀다. 앱이 백그라운드로 갈 때 QBChat 인스턴스에서 로그 아웃하고 앱이 포 그라운드로 들어가면 QBChat에 로그인하십시오. 당신이 QBChat에 존재 메시지를 보내지 않는 경우에, 소켓

관련 문제