Я хочу, чтобы пользователь моего веб-приложения мог отправлять несколько объектов на свою временную шкалу с одной страницы (главная_страница).
У меня уже сохранен токен доступа пользователя.
Теги на странице, которую я пытаюсь отправить, url - page_url:
<meta property="fb:app_id" content="my_app_id" />
<meta property="og:type" content="my_namespace:my_object" />
<meta property="og:title" content="some string" />
<meta property="og:description" content="some other string" />
<meta property="og:image" content="some_image_url" />
<meta property="og:locale" content="en_US" />
<meta property="og:url" content="page_url" />
Код Rails для отправки URL-адреса, вызванного с главной страницы:
begin
fb_post = RestClient.post 'https://graph.facebook.com/me/my_namespace:do', :access_token=>user.get_facebook_auth_token, :my_object=>"page_url"
rescue StandardError => e
p 'e.response is'
p e.response
end
Выход
2011-11-02T02:42:14+00:00 app[web.1]: "e.response is"
2011-11-02T02:42:14+00:00 app[web.1]: "{\"error\":{\"message\":\"(#3502) Object at URL page_url has og:type of 'website'. The property 'my_object' requires an object of og:type 'my_namespace:my_object'.\",\"type\":\"OAuthException\"}}"
Самое странное, что после получения этой ошибки, если я протестирую page_url в Отладчике объектов, он проходит без каких-либо ошибок/предупреждений, og:type
является правильным типом и заметьте 'website'
, а затем запустив тот же код Rails, что и выше, будет отлично работать.
Я пробовал это без тега og:url
, и то же самое происходит.
UPDATE:
В соответствии с ответом Igy я попытался разделить процесс очистки объекта с процессом создания действия. Итак, перед тем, как действие было отправлено для совершенно нового объекта, я запустил update для объекта с scrape=true
.
begin
p 'doing fb_update'
fb_update = RestClient.post 'https://graph.facebook.com', :id=>page_url, :scrape => true
p 'fb_update is'
p fb_update
rescue StandardError => e
p 'e.response is'
p e.response
end
Выход
2011-11-05T13:27:40+00:00 app[web.1]: "doing fb_update"
2011-11-05T13:27:50+00:00 app[web.1]: "fb_update is"
2011-11-05T13:27:50+00:00 app[web.1]: "{\"url\":\page_url,\"type\":\"website\",\"title\":\page_url,\"updated_time\":\"2011-11-05T13:27:50+0000\",\"id\":\id_here}"
Нечетным является то, что тип website
, а заголовок - это URL-адрес страницы. Опять же, я проверил как в HTML, так и в отладчике Facebook, и тип и название в них верны.