2012-03-11 2 views
0

iOS 5 앱을 개발 중이며 iOS 용 Facebook SDK를 구현했습니다. 그 (작동하지 않는) 내 코드 그래서 나는 사진을 공유하고 싶습니다 : Facebook SDK iOs와 그림을 공유하려면 어떻게해야합니까?

if (buttonIndex==3) { 


    if (facebook == nil) 
    { 
     // Setup Facebook connection 
     [self setUpFacebookConnection]; 
    }else { 
     [self fbDidLogin]; 
    }   
} 

} 
- (void)setUpFacebookConnection 
{ 
facebook = [[Facebook alloc] initWithAppId:@"245697495524266" andDelegate:self]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) 
{ 
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
} 

if (![facebook isSessionValid]) 
{ 
    NSArray* permissions = [[NSArray alloc] initWithObjects: 
          @"offline_access", @"publish_stream", @"publish_actions", @"photo_upload", nil]; 

    [facebook authorize:permissions]; 
} 
} 

- (void)fbDidLogin{ 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
[defaults synchronize]; 


bannerview2.hidden=YES; 

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale); 
else 
    UIGraphicsBeginImageContext(self.view.bounds.size); 

// retrieve the current graphics context 
CGContextRef context = UIGraphicsGetCurrentContext(); 

// render view into context 
[self.view.layer renderInContext:context]; 

// create image from context 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

// save image to photo album 
UIImageWriteToSavedPhotosAlbum(image, 
           self, 
           nil, 
           @"image.png"); 
bannerview2.hidden=NO; 


NSMutableString *message = [[NSMutableString alloc] init]; 
[NSString stringWithFormat:@"Resultado final %@: %d vs. %@: %d. Mi jugador hizo %d puntos y cometió %d faltas.",intnomlocal, puntsl, intnomvisitant, puntsv, puntsjugadorint, faltesjugadorint]; 




NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:image,  @"picture", message,@"message", nil]; 

    [facebook requestWithGraphPath:@"me/feed"andParams:params andHttpMethod:@"POST" andDelegate:self];  

} 

그래서 모든 작품 사진을 공유하는 일부를 제외하고 - (무효) fbDidLogin. 어떻게 해결할 수 있습니까?

+0

fbDidLogin에서 정확히 무엇이 발생하며 "잘못된"동작은 어디에 있습니까? – LordT

+0

@LordT fbDidLogin에서 앱은 스냅 샷을 만들어 Facebook에 업로드해야하지만 마지막 부분은 작동하지 않습니다. –

답변

2

DIC PARAMS에 액세스 토큰을 추가하려고합니다. https://developers.facebook.com/docs/reference/api/permissions/에 따라 publish_stream 권한이 필요합니다. 그러나, 심지어 그 허가와 함께, 나는 당신이 나/사진에 게시하는 것을 허락 받는다라고 확신하지 않고있다. 먼저 피드에 게시 해보세요!

[편집] 내가 틀렸어. UIImage를 업로드하려면 user_photos, publish_stream 및 upload_photos 권한이 필요하며 나와/photos에 게시하십시오. 업로드 할 이미지로 나에게/post 피드를 게시 할 수 없습니다.

fb에서 직접 최신 페이 스북 API 탐색기가 조금 더 좋습니다. https://developers.facebook.com/tools/explorer

here "게시"에서 게시 할 수있는 내용과 위치를 확인할 수 있습니다. 앨범 ID가 필요한 기존 앨범에만 사진을 업로드 할 수 있습니다.

클래스에 FBRequestDelegate 프로토콜을 구현하여 실패한 사항과 실패한 사항을 확인해야합니다.

[편집 2]이 게시물을 확인하십시오 : other SO post - 정말로 publish_stream 권한도 필요합니다. 다시 시도해보십시오. 주변을 둘러 볼 수 없다면 테스트 환경을 설정하겠습니다.

+0

publish_stream을 (를) 추가했습니다. 그래서 내가 나를 게시 할 수 없다면/사진을 어디에 게시 할 수 있습니까? –

+0

me/feed가 뉴스 피드입니다. – LordT

+0

photo_upload 권한을 추가했습니다. 그러나 그것은 작동하지 않습니다 ... –

0

당신은 필요한 권한을 누락

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:image, @"picture",message,@"caption",[facebook accesstoken],@"access_token",nil]; 
+0

둘 다 작동하지 않습니다. 다른 생각이있어? –

+1

me/feed 대신 me/photos를 사용하십시오. 피드로 사용하려면 이미지로 URL을 설정하여 객체로 보내지 않아야합니다. –

관련 문제