2013-02-27 4 views
1

Я хочу, чтобы сообщение в Facebook, у меня есть post_id, и я не могу найти FQL Query для того, чтобы понравиться конкретное сообщение на странице разработчика Facebook в SDK IOS.Как Facebook сообщение с использованием GraphAPI или FQL Query или HTTP Post метод

Из страницы разработчиков Facebook говорится, что вам может понравиться сообщение с использованием метода HTTP POST, это означает, что мы не можем использовать GraphAPI или fql.query как публикацию.

Может кто угодно поделится HTTP-адресом POST, чтобы опубликовать сообщение в Facebook.

есть кто здесь, кто разрабатывает аналогичную функциональность кнопки для публикации в Facebook, используя пользовательскую кнопку в iOS.

Заранее спасибо.

+0

Спасибо:) Очень полезный вопрос. –

ответ

1

Я вижу, вы просите полей (параметров) для HTTP POST URL. Запрос HTTP POST не содержит (обычно) параметров, к которым вы, вероятно, привыкли, когда вы передаете их в классическом запросе GET, таком как ? Param1 = значение & param2 = значение после имени сценария в некотором URL.

запрос POST отправляет данные на сервер внутри тела сообщения, проверьте: http://en.wikipedia.org/wiki/POST_(HTTP)

Теперь, когда вы знаете, что это то, что вы можете сделать:

Вы можете получить количество подобных с классический запрос GET, URL, который можно вставить в любой веб-браузер и получить ответ, например:

https://graph.facebook.com/260895413924000_605362559477282/likes?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

Этот URL даст вам ответ со всеми людьми, которые понравилось, что пост/фото.

Вы можете оставить сообщение «access_token = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx», если вы знаете, что сообщение/фотография является общедоступной, так как это (https://www.facebook.com/photo.php?fbid=605362542810617&set=a.260905783922963.82517.260895413924000). Если вам не нужно, чтобы создать одну фактическую access_token (также для размещения вам нужно создать один), и для тестирования вы можете сделать это здесь: https://developers.facebook.com/tools/explorer/

Теперь, если вы хотите на самом деле, как фотографию, вы не можете просто сформируйте URL-адрес, который вы можете скопировать/вставить в свой браузер и который вызовет подобное действие. Это потому, что браузеры не делают POST запросов, вам нужно сделать, это корыто код, как Иво Патрик Tudor Вайс предложил или в конечном счете, для целей тестирования вы можете сделать это с завитка утилитой из консоли, как это:

curl --data "access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" https://graph.facebook.com/260895413924005362559477282/likes 

и вы может отменить подобное с помощью HTTP DELETE ...как это:

curl --data "access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -X DELETE https://graph.facebook.com/260895413924000_605362559477282/likes 

- UPDATE, дополнительные вопросы, сделанные О.П. в комментариях:

Это, конечно, можно использовать ASIHTTPRequest сделать GET, POST и DELETE HTTP запросы. Однако я бы не советовал использовать эту библиотеку для вашего дела. Одна из причин заключается в том, что автор ASIHTTPRequest прекратил работу над библиотекой, а другой причиной является то, что Facebook SDK для iOS - лучший выбор, поскольку с ним у вас есть много других вещей, которые уже позаботились о вас. Это, как говорится здесь примеры:

Первый тип либо один из этих трех комбинаций в зависимости от того, что вы хотите:

Получить все люди, которые любили конкретную должность:
(для простоты я опущено access_token здесь, но вы можете добавить его в URL, если требуется)

NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/260895413924000_605362559477282/likes"]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 

Как конкретной должности самостоятельно:

NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/260895413924000_605362559477282/likes"]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request appendPostData:[@"access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" dataUsingEncoding:NSUTF8StringEncoding]]; 
//[request setRequestMethod:@"POST"]; // <--- NOT NEEDED since it is the default if you previously called appendPostData 

В отличие от должности:

NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/260895413924000_605362559477282/likes"]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request appendPostData:[@"access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" dataUsingEncoding:NSUTF8StringEncoding]]; 
[request buildPostBody]; 
[request setRequestMethod:@"DELETE"]; 

Затем выполнить фактический запрос:

[request startSynchronous]; 
NSString *response = [request responseString]; 
NSLog(@"Response: %@", response); 

Запомнить синхронный запрос нормально для тестирования, но ваш GUI будет отвечать на запросы, если вы используете это на главной теме в реальном приложении. Узнайте, как выполнить асинхронный запрос здесь: http://allseeing-i.com/ASIHTTPRequest/How-to-use

Что касается вашего примера iOS. Здесь было бы слишком много писать весь код. И вы уже получили ответ от Ivo Patrick Tudor Weiss, который совершенно прав. Единственное, чего не хватает, это шаблонный код, который вам нужно пройти для проверки подлинности на Facebook и установить FBSession.

Я бы посоветовал вам идти через этот материал здесь: https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/

Загрузите последнюю версию SDK, которая содержит также пример кода, и следуйте учебник на Facebook сети. Затем, когда вы настроите основы, вернитесь к ответу, полученному от Ivo.

+0

Спасибо ivan, его действительно полезная почта для меня, но можете ли вы дать мне пример, как сообщение в SDK iOS, если возможно, дайте мне ссылку на этот пример, чтобы я мог скачать этот источник. и можно ли передавать HTTP-URL как сообщение, используя ASIHTTPRequest. – Apple

+0

Я обновил свой ответ, чтобы отразить то, что вы здесь задали. –

+0

Обратите внимание, что вы можете сделать все вышеперечисленное с помощью NSURLConnection, не включая сторонние библиотеки. Проверьте этот пост, например: http://stackoverflow.com/questions/2071788/iphone-sending-post-with-nsurlconnection –

0

Вы можете использовать Graph API, чтобы опубликовать сообщение в Facebook. Как говорится в документации здесь: http://developers.facebook.com/docs/reference/api/post/

Чтобы создать, как вам нужно выдать HTTP POST запрос на POST_ID/likes связи с publish_stream разрешения. Вы можете подавить уведомление, созданное, когда нравится сообщение, передавая параметр notify со значением false.

+0

Не могли бы вы дать мне пример того, что URL-адрес HTTP POST понравится вам? потому что я не знаю полей, которые проходят по этому URL-адресу – Apple

2

Вот пример, если вы используете Facebook SDK в прошивкой:

[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"%@/likes", post_id] 
          parameters:[NSDictionary dictionary] 
          HTTPMethod:@"POST" 
         completionHandler:^(FBRequestConnection *connection, 
              id result, 
              NSError *error) 
          { 
           if (error) 
           { 
            NSLog(@"Error: %@", [error localizedDescription]); 
           } 
           else 
           { 
            NSLog(@"Result: %@", result);   
           } 
          }]; 
+0

за ваш ответ, но из этого кода я думаю, что этот запрос Графа вернет общее количество понравившихся для определенного сообщения id? я прав ? и в моем Facebook SDK нет никакого класса FBRequestConnection. – Apple

+0

Нет, обратите внимание, что параметр HTTPMethod, установленный в POST, POST HTTP-действие, понравится сообщению на Facebook, если вы измените его на GET, вы получите количество понравившихся, если вы измените его на DELETE, вы удалите уже существующие , Результатом обработчика завершения будет объект NSDictionary, содержащий ответ от Facebook, который будет отличаться в зависимости от выбранного вами метода HTTPMethod. Класс FBRequestConnection должен быть там, если вы добавили оператор #import . И, конечно же, вы должны сначала инициировать FBSession, чтобы все это работало. –

 Смежные вопросы

  • Нет связанных вопросов^_^