Facebook API 400 Bad Request

Estou tentando usar o Facebook api para executar uma consulta fql. Eu configurei tudo em PHP aqui é como o código se parece:

$app_id = 'APP_ID'; $app_secret = 'APP_secret'; $my_url = "url.com/facebook.php"; $code = $_REQUEST["code"]; //auth user if(empty($code)) { $dialog_url = 'https://www.facebook.com/dialog/oauth?client_id=' . $app_id . '&redirect_uri=' . urlencode($my_url) ; echo("top.location.href='" . $dialog_url . "'"); } //get user access_token $token_url = 'https://graph.facebook.com/oauth/access_token?client_id=' . $app_id . '&redirect_uri=' . urlencode($my_url) . '&client_secret=' . $app_secret . '&code=' . $code; $access_token = file_get_contents($token_url); // Run fql query $fql_query_url = 'FQL_Query'; $fql_query_result = file_get_contents($fql_query_url); $fql_query_obj = json_decode($fql_query_result, true); 

Tudo funcionou bem usando o código acima, mas recentemente decidi mudar minha estrutura de URL e, em vez de acessar a página via url.com/facebook.php, eu gostaria de acessá-la via url.com/#facebook .

Quando eu fiz essa alteração na variável $ my_url, recebi os seguintes erros.

 [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request 

Alguma ideia? Obrigado!

Bem, vamos começar com as configurações da aplicação do Facebook. Nas configurações do aplicativo você define o “URL da canvas” e se você decidir mudar isso, então você precisa alterá-lo não apenas no seu código, mas também nas configurações do aplicativo no aplicativo do desenvolvedor.

Outra coisa é que, se o Facebook chamasse sua página com url, então você deve usar exatamente a mesma URL no parâmetro redirect_uri quando estiver indo para autenticação, está na documentação ( http://developers.facebook.com/docs/authentication/ ) . É o que eles escrevem sobre o redirect_uri:

O redirect_uri deve estar no caminho do URL do Site que você especifica na seção Website da guia Resumo no aplicativo Desenvolvedor. Se for a raiz do domínio, ele deve terminar com uma barra final. Observe que seu redirect_uri não pode ser um redirecionador.

e

Para autenticar seu aplicativo, você deve passar o código de autorização e o segredo do aplicativo para o ponto final do token da API Gráfico – juntamente com o exato mesmo redirecionamento usado acima – em https://graph.facebook.com/oauth/access_token

Agora, sua decisão de mudar a url para ter um hash nela (#) não é boa. Esta parte do URL não é para o que você está tentando usá-lo. Apenas o google “hash part in url” e leia um pouco.

extension=php_openssl.dll -o no XAMPP adicionando extension=php_openssl.dll no extension=php_openssl.dll xampp/php/php.ini . Em algumas versões do XAMPP, esta linha é comentada como ;extension=php_openssl.dll , então basta ;extension=php_openssl.dll e reiniciar apache.