Статус статуса iOS Facebook
Я смущен тем, как я использую местоположение в статусе пользователя. Я вижу, что есть место, но я не знаю, как его использовать. Инструкции просто говорят об объекте, он вообще не указывает, какой объект он хочет и в каком формате он хочет. Может кто-нибудь дать мне руку на публикацию статуса с местоположением на нем?
Теперь это мой код:
- (void)postWithMessage:(NSString *)message image:(UIImage *)image location:(CLLocation *)location {
NSMutableDictionary *params = [NSMutableDictionary dictionary];
NSString *path = @"feed";
[params setObject:@"status" forKey:@"type"];
if (message && ![message isEqualToString:@""]) [params setObject:message forKey:@"message"];
if (image) {
path = @"me/photos";
[params setObject:@"photo" forKey:@"type"];
NSData *imageData = UIImagePNGRepresentation(image);
[params setObject:imageData forKey:@"source"];
}
if (location) {
//Stole this from iOS hackbook that Facebook wrote, but it wasn't helpful.
NSString *centerLocation = [[NSString alloc] initWithFormat:@"%f,%f", location.coordinate.latitude, location.coordinate.longitude];
[params setObject:centerLocation forKey:@"center"];
}
[facebook requestWithGraphPath:path andParams:params andHttpMethod:@"POST" andDelegate:self];
}
Ответы
Ответ 1
Документы для создания сообщения потока перечисляют параметр place
, значение которого является идентификатором страницы Facebook. Вы можете найти эти идентификаторы места через search или запрос места таблицы FQL.
В этом случае вы также должны использовать трафик api me/feed
.
Хотя вы не связаны с вашим вопросом, в ветке if (image)
вы добавляете параметр type
, который не задокументирован в разделе при публикации фотографии.
Ответ 2
Чтобы добавить место, вам необходимо указать идентификатор места, известный Facebook в настоящее время. Для этого вы можете получить ближайшие места, которые возвращают идентификатор, а затем добавьте тот, который вы хотите как место.
Ответ 3
Вы что-то пропустили, так как я помню, хакер использовал это место, чтобы найти идентификатор места, а затем поместить его в параметр "место".
Чтобы сделать это,
1. вам нужно выполнить поиск:
https://graph.facebook.com/search?
q=coffee&
type=place&
center=40.7167,-74&
distance=1000
//копия из facebook:]
- выберите место
- опубликовать сообщение с идентификатором места
Отметил, что, как я пробовал, прежде чем вы не можете выбрать место с расстоянием более 1000 м
(не уверен в этом сейчас, давно пробовал)
Ответ 4
чтобы проверить это, вы можете попробовать здесь https://developers.facebook.com/tools/
в поле вставьте этот пример строки "search? q = spa & type = place & center = 40.7167, -74 & distance = 1000"
then you will see results like
{
"data": [
{
"location": {
"street": "221 Canal Street, Room 301",
"city": "New York",
"state": "NY",
"country": "United States",
"zip": "10013",
"latitude": 40.71761,
"longitude": -73.99933
},
"category": "Spas/beauty/personal care",
"name": "CiCi Beauty Spa",
"id": "180068255444372"
},
etc...
you can then post status like
("message", "im here guys"); // your message
("place", "180068255444372"); // the id of the place
in the tool field "me/feed"
в инструменте измените метод на POST, затем добавьте параметр поля для "message" и "place", чтобы проверить его.