2012-05-18 3 views
1

나는 페이스 북의 뉴스 피드에서 항목을 공유하는이 코드를 사용하고 있습니다 : 나는에 로그인 한 경우에, 나는 성공적으로 피드를 공유 할 수있는 대화 상자를 볼 수 있습니다IOS에서 Facebook에 로그인하고 뉴스 피드를 공유하려면 어떻게해야합니까?

-(void)recommendOnFacebook:(Item *)currentItem{  
if(!facebook){ 
    facebook = [[Facebook alloc] initWithAppId:@"myappid" andDelegate:self]; 
} 
NSMutableDictionary *params2 = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           [NSString stringWithFormat:@"%@", currentItem.name], @"name", 
           [shop name], @"caption", 
           currentItem.description, @"description", 
           [NSString stringWithFormat:@""], @"link", 
           currentItem.imagePath, @"picture", 
           nil, @"actions", 
           nil];  
[facebook dialog:@"feed" 
    andParams:params2 
    andDelegate:self]; 
} 

. 하지만 로그인하지 않으면이 코드 블록이 끝난 후 api 대화 상자에서 내 자격 증명을 묻습니다. 필요한 것은 사용자가 로그인하지 않으면 api가 대화 상자를 표시하고, 사용자가 성공적으로 로그인하면 다른 대화 상자가 표시되어 진행 상황을 계속 공유 할 수 있습니다.

답변

2

FBSessionDelegate를 살펴볼 필요가 있습니다. 여기에 공공 카페의 경우 로그 아웃을 위해

- (IBAction) facebookShare:(id)sender { 
    AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 

    if (![delegate.facebook isSessionValid]) { 
     [delegate.facebook authorize:[NSArray arrayWithObjects:@"publish_stream", @"offline_access", nil]]; 
    } 
    else { 
     NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
     [NSString stringWithFormat:@"TEXT", score.text], @"name", 
     @"", @"caption", 
     @"DESC.", @"description", 
     @"link", @"link", 
     @"imagelink", @"picture", 
     nil]; 
     [delegate.facebook dialog:@"feed" 
       andParams:params 
      andDelegate:self]; 
    } 

} 

#pragma mark - FB Session Delegate 

- (void)fbDidLogin { 
    AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 
    /*NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[delegate.facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[delegate.facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize];*/ 
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
     [NSString stringWithFormat:@"TEXT", score.text], @"name", 
     @"", @"caption", 
     @"DESC.", @"description", 
     @"link", @"link", 
     @"imagelink", @"picture", 
     nil]; 
     [delegate.facebook dialog:@"feed" 
       andParams:params 
      andDelegate:self]; 
} 

편집

를 공유 내 코드는 유

fbDidLogin FB 세션 위임 방법으로 NSUSerDefaults에 액세스 토큰을 저장하지 마십시오 있는지 확인이 필요하다

FBDialogDelegate 메소드 구현

- (void)dialogDidComplete:(FBDialog *)dialog { 
    AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 
    [delegate.facebook logout:self]; 
} 
+0

대단히 고마워요. 나는 그것을 성공적으로 공유 할 수 있습니다. 하지만 카페에서이 응용 프로그램을 사용하고 있으므로 사용자가 공유 할 때마다 로그 아웃해야합니다. 어떻게해야합니까? 어떤 생각? – Burak

+0

좋아요. 나도 그걸 너와 공유 할께. –

+0

대답을 확인하십시오. –

관련 문제