2012-03-07 2 views
0

Я работаю над приложением iphone (с клиент-серверной связью), которое подключается к facebook через fConnect. Аутентификация facebook и другая связь обрабатываются в приложении iphone, и все они работают нормально.Опубликовать на стене facebook с сервера вместо клиентского приложения

Теперь из-за некоторых проблем с оптимизацией мы хотим обрабатывать функциональность приложения fb wall post с сервера, а не на стороне клиента. Чтобы достичь поставленной задачи, мы отправляем все данные (включая токен доступа fb) на сервер и отправляем HTTP-запрос на facebook через график api. В ответ на это отправить нам сообщение об ошибке:

{"error":{"message":"Invalid token: \"610446057\". An ID has already been specified.","type":"OAuthException","code":2500}}

Пример кода запроса HTTP наклеен ниже:

HttpClient client = new HttpClient(); 
client.getParams().setParameter("http.useragent", "Test Client"); 

PostMethod method = new PostMethod("https://graph.facebook.com/610446057?access_token=MY_VALID_TOKEN_HERE"); 
method.addParameter("id", "610446057"); 
method.addParameter("name", "Zunair Minhas"); 
method.addParameter("picture", "http://profile.ak.fbcdn.net/hprofile-ak-ash2/276791_19292868552_1958181823_s.jpg"); 
method.addParameter("link", "http://www.google.com.pk"); 
method.addParameter("company_overview", "FB Wall post without fb integration. It is a simple Http Post request."); 
client.executeMethod(method); 

def reader = method.getResponseBodyAsString(); 
String data = reader.readLines().join() 
method.releaseConnection(); 

Сервер написан на Grails 2.0.1.

Я следовал пост образец Fb, представленную здесь: http://developers.facebook.com/docs/reference/api/

Можете ли вы вести, что я делаю неправильно?

Спасибо.

Zunair Minhas

+1

Не записывайте свой маркер доступа в SO вопрос! Если это действительно, любой может использовать его! – thermz

+0

Почему вы используете токен в URL вместо: method.addParameter («access_token», «MY_VALID_TOKEN»); ? – thermz

+0

Я тоже пробовал это с таким подходом, но все было не так. Я получил тот же ответ, который был получен ранее. –

ответ

1

Все, что вам нужно сделать, это удалить строку:

method.addParameter("id", "610446057"); 

Вы проходящее, что с помощью графа URL https://graph.facebook.com/610446057


Чтобы разместить на стене просто сделать

https://graph.facebook.com/me/feed?access_token=<xxx> 

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

+0

Я не видел вашего ответа, Stack Overflow освежает ошибки снова :-) – thermz

+0

Я сделал это, потому что это было упомянуто в примере здесь [ссылка] (http://developers.facebook.com/docs/reference/api/). Но когда я удаляю эту строку, я получаю этот ответ: '{"error": {"message": "(# 100) Можно вызвать этот метод только для действительных тестовых пользователей для вашего приложения", "type": "OAuthException" , "code": 100}} ' Дополнительные предложения? –

+0

К сожалению, этот URL-адрес не работает. Получен тот же ответ. :( Я также попытался опубликовать запрос на стене пользователя через проводник Graph API и тот же результат появился и там. Можете ли вы проверить, не упустил ли я какой-либо шаг или какую-либо специальную настройку? –

0

Вы задав идентификатор, который у вас уже есть в URL

попытка удалить

method.addParameter("id", "610446057");