Я пытаюсь опубликовать изображение на странице Facebook с id = 226338660793052, но оно постоянно заканчивается в / me / photos.Что я делаю не так?
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
imageToSend, @"source",
facebookMessageTextView.text, @"message",
nil];
[facebook requestWithGraphPath:@"/226338660793052/photos" andParams:params andHttpMethod:@"POST" andDelegate:self];
Я не получаю сообщения об ошибке.Я ничего не получаю, за исключением того, что фотография попадает в мой собственный альбом, меня / фотографии, а не в альбом 226338660793052 / фотографии.
Но когда я просто отправляю сообщение на эту страницу, я получаюуспешное сообщение на временной шкале страницы:
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"http://www.bitsonthego.com", @"link",
@"my profile", @"name",
facebookMessageTextView.text, @"message",
nil];
[facebook requestWithGraphPath:@"/226338660793052/feed" andParams:params andHttpMethod:@"POST" andDelegate:self];
Что мне здесь не хватает?Я знаю, что это должно быть возможно, так как я могу использовать браузер для загрузки изображения на нужную страницу как случайный пользователь без прав администратора.Я просто не могу сделать это из API графа.
ОБНОВЛЕНИЕ:
Я решил часть проблемы.Вы должны использовать страницу доступа access_token.Вот как вы его получите:
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"access_token", @"fields",
nil];
FBRequest *request = [facebook requestWithGraphPath:@"226338660793052" andParams:params andDelegate:self];
Когда вы получите результат, вы добавите его в транзакцию выше:
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
image, @"source",
[result objectForKey:@"access_token"], @"access_token",
facebookMessageTextView.text, @"message",
nil];
FBRequest *request = [facebook requestWithGraphPath:[[result objectForKey:@"id"] stringByAppendingString:@"/photos"] andParams:params andHttpMethod:@"POST" andDelegate:self];
Но это не сработает, потому что Facebook.m заменит этот новый access_token на пользователя по умолчанию access_token, поэтому я внес изменение в Facebook.m около строки 166 с:
if ([self isSessionValid]) {
[params setValue:self.accessToken forKey:@"access_token"];
}
на:
if ([self isSessionValid]) {
if ([params valueForKey:@"access_token"] == nil)
[params setValue:self.accessToken forKey:@"access_token"];
}
.код доступа, который вы указываете как часть параметров, из-за того, что Facebook.accessToken забит.Теперь это позволит опубликовать картинку на интересующей меня странице.
Однако это работает, потому что я являюсь администратором на рассматриваемой странице.Другие пользователи не смогут публиковать изображения, и изображения снова окажутся в их собственных альбомах, потому что запрос на получение access_token для страницы вернет ноль.
Согласно документации в Facebook, если страницанеограниченно, как эта страница, тогда должна быть возможность разместить на ней картинку:
ПРИМЕЧАНИЕ:
Для соединений, требующих токен доступа,Вы можете использовать любой действительный токен доступа, если страница общедоступна и не имеет ограничений.Соединения на страницах с ограниченным доступом требуют токена доступа пользователя и видны только пользователям, которые соответствуют критериям ограничения (например, возрасту), установленным на странице.
Я упоминал, что моя страница является открытой и не имеет ограничений?
Токены доступа к странице
Чтобы выполнять следующие операции как Страница, а не как текущий пользователь, вы должны использовать токен доступа Страницы, а не пользователятокен доступа, обычно используемый для чтения объектов Graph API.Этот токен доступа можно получить, введя HTTP GET для / USER_ID / account с разрешением manage_pages.Это вернет список страниц (включая страницы профиля приложения), к которым пользователь имеет административный доступ, вместе с access_tokens для этих страниц.Кроме того, вы можете получить токен доступа к странице для отдельной конкретной страницы, выполнив HTTP GET для / PAGE_ID? Fields = access_token с разрешением themanage_pages, как описано выше.Для публикации на странице также требуется разрешение publish_stream, если не указано иное.
Итак, как можно опубликовать изображение на общедоступной / неограниченной странице?Я могу сделать это из любого браузера, так что это возможно, но как это сделать с помощью Graph API?Учитывая, что я могу публиковать в фиде без shenanigans access_token, как насчет публикации изображения по-другому?
Итак, я пытаюсь опубликовать изображение, а не просто URL-адрес эскиза, вобщедоступная / неограниченная страница с использованием Graph API.