2012-03-21 2 views
0

를 통해 로그 아웃도 유효한 세션을 보여줍니다, 나는 도움을 요청해야합니다. UITableViewCell에 공유 버튼이 있습니다. 터치 동작에서 페이스 북 로그인 대화 상자를 연 다음 로그인하면 피드 대화 상자를 표시합니다. 잘 작동하지만 Facebook 앱을 통해 로그 아웃하더라도 sessionIsValid가 YES를 보여줍니다. 코드는 다음과 같습니다.아이폰 페이스 북 SDK 내가 온라인 검색을 시도하는 코드의 몇 시간 후에 페이스 북 응용 프로그램

if(indexPath.row==0) 
     { 
      [email protected]"xxx"; 

      AppDelegate *appDelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; 
      appDelegate.scheduleViewController=self; 
      self.facebook = [[Facebook alloc] initWithAppId:AppId andDelegate:self]; 
      // [self.facebook requestWithGraphPath:@"me" andDelegate:self]; 
      if ([defaults objectForKey:@"FBAccessTokenKey"] 
       && [defaults objectForKey:@"FBExpirationDateKey"]) { 
       self.facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
       self.facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 

      } 
      if (![self.facebook isSessionValid]) { 
       [self.facebook authorize:permissions]; 
      } 
      else 
       [self doStuffAfterLogin:[self.facebook accessToken]]; 

     } 

- (void)fbDidLogin {  
    [defaults setObject:[self.facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[self.facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 
    [self doStuffAfterLogin:[self.facebook accessToken]]; 
} 
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error { 

    NSLog(@"%@", [error localizedDescription]); 
    NSLog(@"Err details: %@", [error description]); 
    UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"Error!" message:@"Error!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
    [alertView show]; 
    [defaults removeObjectForKey:@"FBAccessTokenKey"]; 
    [defaults removeObjectForKey:@"FBExpirationDateKey"]; 
    [self.facebook authorize:permissions]; 

} 

-(void)doStuffAfterLogin:(NSString*)accessToken; 
{ 
    NSMutableString *imgUrl=[[NSMutableString alloc]init]; 
    if([[defaults objectForKey:@"imageUrl"] isEqualToString:@""]) 
     imgUrl= @"http://artist.eventseekr.com/images/no-photo.png"; 
    else 
     imgUrl=[defaults objectForKey:@"imageUrl"]; 
    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            AppId, @"app_id", 
            imgUrl, @"picture", 
            [NSString stringWithFormat:@"Watch %@ in action at the %@ event",[defaults objectForKey:@"name"],[defaults objectForKey:@"eventName"]], @"caption", 
            @"Sample Festival App", @"description", 
            nil]; 

    [self.facebook dialog:@"feed" andParams:params andDelegate:self]; 

} 

답변

1

맞습니다. 각 앱에는 자체 샌드 박스 영역이 있습니다. 따라서 앱을 승인 했으므로 앱이 자체 검증을 위해 사용할 수있는 토큰을 저장했습니다. 다른 앱에 대해서는 아무 것도 모릅니다. 따라서 페이스 북 앱에서 로그 아웃하면 알 수 없습니다.

+0

그래서 와트 내가 응용 프로그램 시작시 NSUserdefaults에서 accessToken 및 만료 값을 제거했다 않았다, 나는 어떤 다른 해결책을 생각하지 못할. 어떤 아이디어? –