2013-08-14 1 views
2

ios 앱에서 페이스 북 페이지 으로 페이지으로 사진을 게시하는 데 문제가 있습니다. 관리자로 게시 할 수있는 유일한 방법은 상태 메시지입니다.페이 스북 페이지에서 관리자로 게시하기

여기에 내가 한 것.

// get access token first 
[FBRequestConnection startWithGraphPath:@"/__facebook_page_id__?fields=access_token" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 

    // make sure its not nil 
    if ([result valueForKey:@"access_token"] != nil) { 
     NSString *accessToken = [result objectForKey:@"access_token"]; 

     NSLog(@"Access token: %@", accessToken); 

     NSMutableDictionary* params = [[NSMutableDictionary alloc] init]; 
     [params setObject:@"This is some status message" forKey:@"message"]; 
     [params setObject:accessToken forKey:@"access_token"]; 

     [FBRequestConnection startWithGraphPath:@"/__facebook_page_id__/feed" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 

      NSLog(@"Result: %@", result); 
      NSLog(@"Error: %@", error); 

     }]; 
    } 

}]; 

위의 코드는 성공적으로 관리으로 페이스 북 페이지에 게시 할 수 있습니다. 사진을 게시해야하므로 grap 경로를/facebook_page_id/photos로 변경해야합니다.

NSMutableDictionary* params = [[NSMutableDictionary alloc] init]; 
[params setObject:UIImagePNGRepresentation(self.imagePreview.image) forKey:@"picture"]; 
[params setObject:@"This is some description" forKey:@"message"]; 
[params setObject:accessToken forKey:@"access_token"]; 

[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/__facebook_page_id__/photos"] parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 

    NSLog(@"Result: %@", result); 
    NSLog(@"Error: %@", error); 

}]; 

위의 코드는 게시되었지만 admin이 아닙니다. 이 페이지의 액세스 토큰을 사용하고 있습니다.

나는 fb_page_id/photos 경로가 깨져서 fb_page_id/feed를 사용하고 링크, 그림 등의 다른 필드를 보내려고했지만 여전히 페이지 관리자가 아닌 사용자로 게시했습니다.

내가 잘못하고 있는지 알려 주시기 바랍니다.

일부 정보 : - 배포 대상 : 5.1 및 위 - 페이스 북 SDK 버전 :

3.7 미리 감사드립니다.

+0

이 링크 확인 http://stackoverflow.com/questions/12193915/publishing-on-my-facebook-wall-using-new-sdk?rq=1. –

+0

나는 내가 페이스 북에 게시하는 데 문제가 없다고 생각했다. 유일한 문제는 페이지의 관리자로 게시 할 수없는 것 같습니다. –

답변

1

마침내 대답을 찾았습니다. 동일한 문제가있는 누군가를 위해, 여기 내가하고있는 일이 있습니다.

  1. 당신은 페이지의 /page_id?fields=access_token

    [FBRequestConnection startWithGraphPath에 액세스하여 access_token이 필요합니다 [있는 NSString stringWithFormat : @ "/ %의 @ 필드 = access_token은?", FB_PAGE_ID] completionHandler :^(FBRequestConnection * 연결 ID를 결과, NSError * 오류) {

    // if the access_token is not there, the user might not able to post. check the permission 
    if ([result valueForKey:@"access_token"] != nil) { 
        NSString *accessToken = [result objectForKey:@"access_token"]; 
    } 
    

    }];

  2. 페이지의 access_token을 가져온 후 REST API를 사용하여 이미지를 게시해야합니다. 여기서는 AFNetworking을 사용하고 수동으로 이미지를 업로드합니다.

    if ([result valueForKey : @ "access_token"]! = nil) { NSString * accessToken = [result objectForKey : @ "access_token"];

    NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com"]; 
    AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:url]; 
    
    // parameter 
    NSDictionary *params = @{@"access_token": accessToken, @"message": message}; 
    
    // image data 
    NSData *imageData = UIImageJPEGRepresentation(self.imagePreview.image, 1); 
    
    // create Request and upload the image 
    NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:[NSString stringWithFormat:@"/%@/photos/", [defaults stringForKey:@"fb_page_id"]] parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
        [formData appendPartWithFileData:imageData name:@"source" fileName:accessToken mimeType:@"image/jpeg"]; 
    }]; 
    
    // publish! 
    AFJSONRequestOperation *json = [AFJSONRequestOperation JSONRequestOperationWithRequest:request1 success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    
        // IMAGE PUBLISHED!!! 
    
    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
        // SOMETHING WRONG HAPPEN 
    }]; 
    [json start]; 
    

    은}

나는 REST API를 사용하고 있는데 왜 안 함, 나는 그들의 SDK를 사용하여 모든 노력을,하지만 항상 실패했습니다.

누군가이 코드 조각에 유용 할 것입니다.