2013-08-14 3 views
2

У меня проблема с публикацией фотографии с приложения ios на странице Facebook в качестве администратора страницы. Единственное, что я могу опубликовать как admin, - это сообщение о статусе.Публикация изображения на странице Facebook как администратора

Вот что я сделал.

// 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); 

     }]; 
    } 

}]; 

Приведенный выше код успешно опубликовать facebook странице, как админ. Поскольку мне нужно опубликовать фотографию, мне нужно изменить путь 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); 

}]; 

Приведенный выше код успешно опубликован, но не как администратор. Хотя я использую токен доступа к странице.

Я думал, что путь fb_page_id/photos был сломан, поэтому я попытался использовать fb_page_id/feed и отправить другие поля, такие как ссылка, изображение и т. Д. Но все же он размещен как пользователь, а не администратор страницы.

Пожалуйста, дайте мне знать, если я ошибаюсь.

Некоторые сведения: - Развертывание цель: 5.1 и выше - Facebook SDK Версия: 3,7

Спасибо заранее.

+0

проверить эту ссылку http://stackoverflow.com/questions/12193915/publishing-on-my-facebook-wall-using-new-sdk?rq=1. –

+0

Я думал, что у меня нет проблем с публикацией в facebook как пользователь. единственная проблема - я не могу опубликовать ее в качестве администратора страницы. –

ответ

1

Я наконец нашел ответ. На всякий случай, у кого-то такая же проблема, вот что я делаю.

  1. Вам нужен страницу Профиль access_token путем доступа к /page_id?fields=access_token

    [FBRequestConnection startWithGraphPath будет: [NSString stringWithFormat: @ "/% @ поля = access_token?", FB_PAGE_ID] completionHandler:^(FBRequestConnection * соединения, идентификатор результат, ошибка 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. После получения доступа к странице, вы должны отправить изображение, используя REST API. Здесь я использую AFNetworking и вручную загружаю изображение.

    if ([result valueForKey: @ "access_token"]! = Nil) { NSString * accessToken = [объект результатаForKey: @ "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, но его всегда не удалось.

Я надеюсь, что кому-то это будет полезно для этой части кода.