Facebook Graph API – Guia de página Permissões extra

Estou tentando criar uma guia de boas-vindas para uma das minhas páginas, mas eu gostaria de poder acessar os usuários gostam (permissão user_likes).

Só posso encontrar documentação sobre como fazer isso para um aplicativo do Facebook ou um site que integra o Facebook. Não consigo encontrar nenhuma documentação sobre como fazer isso para um aplicativo (guia) dentro de uma página do Facebook (como uma guia de boas-vindas).

É possível como uma guia de página para solicitar permissions extra do usuário, mas permitir o access à página sem ele, ou é um caso ou eu ter que fazer um aplicativo, bem como uma guia de página? Posso ter um botão que, quando eles clicam, concedem as permissions extra da página?

Atualmente estou tentando duas implementações separadas, nenhuma das quais eu posso começar a trabalhar, PHP e Javascript.

Obrigado,


Apenas usando

https://stackoverflow.com/questions/7278378/facebook-graph-api-page-tab-extra-permissions/$loginUrl = $fb->getLoginUrl( array('canvas' => 1, 'scope' => 'user_likes,user_about_me,user_birthday') ); echo "Login"; 

Resultados em um link, que apenas redireciona o usuário (dentro do iframe das páginas) em uma canvas com o logotipo do Facebook. Eu quero uma checkbox de diálogo de permissions!

Fail de Facebook


Usando o código javascript

  FB.init({ appId : 'APPID', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true, // parse XFBML oauth : true // enable OAuth 2.0 }); FB.login(function(response) { if (response.authResponse) { console.log('Welcome! Fetching your information.... '); FB.api('/me', function(response) { console.log('Good to see you, ' + response.name + '.'); FB.logout(function(response) { console.log('Logged out.'); }); }); } else { console.log('User cancelled login or did not fully authorize.'); } }, {scope: 'email'});  

Resulta em

 Unsafe JavaScript attempt to access frame with URL https://www.facebook.com/dialog/oauth?api_key=158609350887973&app_id=158609350887973&client_id=158609350887973&display=popup&locale=en_US&method=permissions.oauth&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df2f7aed38%26origin%3Dhttp%253A%252F%url.com%252Ff3634c5da%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df9748b77&response_type=token%2Csigned_request&scope=email&sdk=joey from frame with URL http://url.com/gs/index.php. Domains, protocols and ports must match. 

O javascript também abre a seguinte checkbox de diálogo de erro

Código de erro da API: 191, Descrição do erro da API: O URL especificado não é de propriedade do aplicativo, Mensagem de erro: redirect_uri inválido: O URL fornecido não é permitido pela configuração do aplicativo.


Configurações de configuração do meu aplicativo

Configurações do Facebook

Você está vendo o erro em sua janela pop-up porque o redirect_uri na sua URL de autorização não corresponde ao que está listado no URL do seu site na configuração do aplicativo. Para resolver isso, você precisa habilitar a opção “Website” na configuração do aplicativo. Habilite-o clicando na checkbox de seleção ao lado de “Website” e, em seguida, entre http://Site.com (ou seja o que seja o URL do seu site real) na checkbox de texto “Site URL”. Esse URL deve corresponder ao URL do host que está fornecendo no redirect_uri. Fazer isso deve resolver o erro da janela pop-up.

Em termos do erro “Invasão de JavaScript para acessar o quadro”, você está usando um navegador web? O Webkit lança esses erros, mas na maior parte pode ser ignorado. Veja isso para obter mais informações: “Erro de JavaScript inseguro para acessar quadro com URL …” erro sendo gerado continuamente no inspetor de Webkit do Chrome

Use o ID do usuário no object de resposta em vez de “eu” quando chama FB.api. Ambos os methods apontam para o fato de você não ter as configurações do seu domínio do site corretas nas configurações do aplicativo.

Nós fazemos isso exatamente em muitos dos nossos aplicativos de tabulação, então é definitivamente possível.

Parece que você está usando o mesmo valor para app_id e api_key. Estes devem ser diferentes.

Em vez de exibir o link ($ loginUrl), tente redirect o usuário, por exemplo, usando a function de header php ou js location.href.