‘Curtir’ uma página usando o Facebook Graph API

Usando a API do Graph Eu gostaria de ter um usuário autorizado “curtindo” uma página.

Eu tentei postar o seguinte

https://graph.facebook.com/${PAGE_ID}/likes?access_token=${ACCESS_TOKEN}

E recebo um erro HTTP 500 acompanhado por “Parâmetro inválido post_id” no corpo da resposta JSON. Parece que o recurso /likes é adequado para gostar de um mural e não de uma página. Como faço para que isso funcione com uma página?

O Facebook anunciou o apoio para gostar de URLs fora do Facebook usando a ação Like interna incorporada . Você precisa ter permissions publish_actions . A URL do gráfico para isso é: https://graph.facebook.com/[User FB ID]/og.likes?object=OG_OBJECT_URL&access_token=USER_ACCESS_TOKEN

No entanto, você não pode usar isso para gostar de uma página no Facebook atualmente, como a documentação declara :

Para páginas do Facebook ou sites que não se integram à Autenticação do Facebook, os desenvolvedores devem continuar usando o plug-in social do botão Curtir.

Atualizar junho de 2016

Ainda não é possível gostar de uma página usando a API do Facebook, conforme declarado na página de documentação do /{user_id}/likes sobre como criar / atualizar / excluir:

Você não pode executar esta operação neste nó de extremidade.

Nas versões anteriores, a mensagem era mais clara (veja a citação abaixo), mas o resultado é o mesmo: não é possível.

Maio de 2014

A página de documentação /{user-id}/likes informa sobre como publicar gostos de páginas do Facebook:

Você não pode publicar usando essa vantagem, pois não é possível gostar de uma Página do Facebook por meio de qualquer API . Você deve usar o botão Curtir se quiser que as pessoas gostem de uma página no seu aplicativo.

Essa é a declaração mais óbvia e clara que me deu uma resposta para a pergunta.

Se seu aplicativo for um aplicativo gráfico aberto, agora você pode gostar de usar a API e não precisa mais do botão.

https://developers.facebook.com/docs/opengraph/actions/builtin/likes/

Se você quiser essa funcionalidade em uma guia de página ou página de canvas no facebook (digamos, para permitir gostar da página de dentro de uma página semelhante), um trabalho em torno de você pode envolver o que Tom Wells sugeriu em sua resposta a Lucas. Primeiro, você incorpora a versão do iframe do botão “Curtir” na sua página e, em seguida, simplesmente ouça o evento edge.create no seu JS, assim:

 FB.Event.subscribe('edge.create', function(response) { alert('You liked the URL: ' + response); // ... } ); 

No retorno de chamada, você pode lidar com o que acontece quando o usuário gostou da página, por exemplo, navegando para fora da página do tipo “curtir” ou exibindo conteúdo somente de conteúdo desejado.

Quando o usuário clica no botão do tipo iFrame, seu código JS deve receber o evento edge.create assumindo que o iFrame foi configurado para apontar para o URL da página em questão.

Acredito que isso não seja permitido, exceto para sites de parceiros específicos, como o yelp. A razão é a segurança, você seria capaz de colocar algum javascript em uma página e ter todos que visitam essa página “Like”, sem o seu conhecimento.

Veja Como eu gosto de um URL? no Fórum de Desenvolvedores da Plataforma Facebook

Você pode gostar de um object com seu id de object usando a API do Facebook usando o seguinte trecho de código

 [FBRequestConnection startForPostWithGraphPath:[NSString stringWithFormat:@"/%@/likes",{object_id}] graphObject:nil completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { //do you customisation post like here }];