Размещение фотографий на фан-странице Facebook с iOS SDK - PullRequest
9 голосов
/ 23 ноября 2010

Я пытаюсь загрузить фотографию на свою страницу в Facebook, используя iOS SDK и API-интерфейс для графиков. Я смог загрузить фотографии на свою стену. Я также смог опубликовать сообщение на стене моей фан-страницы в качестве администратора и создать альбом на своей фан-странице, так что я думаю, что я делаю правильные звонки, но не удается.

Это то, чем я сейчас занимаюсь.

Я вхожу, используя

Facebook *fb = [[Facebook alloc] init];
self.facebook = fb;
[fb release];
NSArray *permissions =  [[NSArray arrayWithObjects:@"read_stream", @"offline_access", @"publish_stream", @"manage_pages", @"user_photos", @"friends_photos",nil] retain];
[facebook authorize:FB_APP_ID permissions:permissions delegate:self];
[permissions release];

После входа в систему я запрашиваю учетные записи

[facebook requestWithGraphPath:@"/me/accounts" andDelegate:self];

Мне возвращаются учетные записи с токенами доступа для каждой страницы и приложения, которым я владею. Я использую простой цикл для анализа учетных записей, чтобы получить дополнительный access_token, предоставленный для страницы, на которую я хочу загрузить фотографию.

Затем я установил свой токен доступа моего объекта Facebook в новый access_token.

facebook.accessToken = new_accessToken;

и попробуйте загрузить фотографию моей фан-страницы, используя

UIImage *uploadImage = [UIImage imageNamed:@"t200.jpg"];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
               uploadImage, @"source", 
             @"test caption", @"message",             
             nil];


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

Я получаю ответ

{"error":{"type":"OAuthException","message":"(#1) An unknown error occurred"}}

Это ошибка в API графа Facebook? Я также попытался сделать этот вызов, используя стандартные запросы HTTPS, и получил тот же результат.

Ответы [ 5 ]

4 голосов
/ 29 января 2012

После успешного входа в Facebook вы можете получить список FanPage, запросив @ "/ me / account" и перейти на нужную страницу поклонника и запросить ее accessToken, отправив запрос на @"/FBFanPageID?fields=access_token"

Этот accessToken отличается от вашего facebook.accesstoken.

Получив fanPage accessToken, установите его как facebook accessToken с помощью

[_facebook setAccessToken:_accessTokenForFanPage]; // это следующий шаг

Теперь вы можете загрузить на стену fanPage по @"/FBFanPageID/photos"

Запросить фан-страничку альбомов @"/FBFanPageID/albums"

Загрузить в определенный альбом @"/AlbumsID/photos"

Для загрузки этих изображений будет использоваться словарь параметров.

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: IMAGE,@"source", IMAGECAPTION,@"message",<br> nil];

1 голос
/ 25 марта 2012

У меня очень похожие коды, и это работает, единственное, что немного отличается, я создаю экземпляр Facebook в AppDelegate ..

QRSMAppDelegate * делегат = (QRSMAppDelegate *) [[UIApplication sharedApplication] делегат];

if (![[delegate facebook] isSessionValid]) {
    [[delegate facebook] authorize:permissions];

Как и вы, я изначально создал экземпляр Facebook в контроллере представления, и у меня появилось много странных ошибок. Проблема (я позже узнал) состоит в том, что ... Facebook отвечает, передавая URL-адрес экземпляру класса Facebook, и снаружи единственной точкой входа в ваше приложение является делегат приложения. (Проверьте пример приложения Facebook sdk Hackbook)!

- (BOOL) приложение: (UIApplication *) приложение openURL: (NSURL *) URL sourceApplication: (NSString *) sourceApplication аннотация: (id) аннотация {

BOOL ret = [facebook handleOpenURL:url];

.... возврата (RET); }

Проблема здесь, конечно, заключается в том, что если я использую Facebook только в небольшой части моего приложения и в нескольких милях от делегата приложения (создание экземпляра Facebook требует, чтобы вы объявили делегата!

Вместо того, чтобы сталкиваться со столь же сложными проблемами при передаче URL-адреса, на самом деле было проще просто выделить init контроллер представления (делегат Facebook) в делегате приложения и передать его в иерархию представления.

1 голос
/ 14 июля 2011

Старые новости, но ... не уверен насчет части фан-страницы, но вам нужно добавить "? Access_token = ..." после "/ me / photos" или что-то еще, что вы в конечном итоге использовали для API графа, чтобы пройти мимо неизвестная ошибка. Facebook SDK автоматически не добавляет токен доступа, поэтому вы должны сделать это самостоятельно.

[facebook requestWithGraphPath: [NSString stringWithFormat: @ "/ me / photos? Access_token =% @", facebook.accessToken] andParams: params andHttpMethod: @ "POST" andDelegate: self];

0 голосов
/ 01 июня 2012

Вы можете отправить электронное письмо на свою фан-страницу и получить прикрепленную фотографию, которая будет отображаться так, как если бы администратор разместил ее.

На вашей фан-странице выберите для редактирования страницу, а затем - для мобильного.На мобильной странице Facebook покажет вам адрес электронной почты, который вы можете использовать для публикации на своей фан-странице.

В iOS я использую http://code.google.com/p/skpsmtpmessage/ для отправки электронной почты

Вы должныиспользуйте это ...

svn checkout http://skpsmtpmessage.googlecode.com/svn/trunk/ skpsmtpmessage-только для чтения

, чтобы загрузить код

Не включайте текст в электронное письмо, кромечто-то в теме.В противном случае это не будет отправлять.

0 голосов
/ 30 ноября 2010

Не уверен насчет этого, так как я новичок в интеграции с FB iOS, но я думаю, что вы не должны использовать меня / фотографии, а только xyz / photos, где xyz - это идентификатор страницы, которую вы хотите опубликовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...