Pergunta

Eu estou escrevendo um aplicativo do Facebook que é um simples jogo de tabuleiro que tenho implementado em javascript. Facebook só parece permitir que aplicações JavaScript executado dentro de um iframe assim que eu estou carregando a página usando <fb:iframe>. Eu só quero ser capaz de dizer o javascript ID do usuário para que eu possa dizer ao usuário se ele for a sua vez ou não, mas eu não posso encontrar documentação sobre como acessar dados do Facebook de dentro do fb: iframe. Eu sou provavelmente faltando alguma conecpt básico como eu não entendo a API do Facebook muito bem.

Foi útil?

Solução

API do Facebook é muito difícil de seguir, e a documentação é muito pobre. Você está certo sobre o Javascript ... normais Javascript só funciona dentro de um iframe no Facebook, caso contrário, você está limitado a um subconjunto de Javascript filtrada chamado FBJS. Você pode ignorar qualquer coisa sobre FBJS na documentação, e foco em iframe.

Iframe carregamento

A primeira coisa que eu gostaria de mencionar é que uma tag <fb:iframe> realmente é renderizado com uma tonelada de coisas no atributo src. Então, se você colocar uma etiqueta como esta em sua página no Facebook: <fb:iframe src="http://example.com/page?x=y">, o que acaba se tornando quando ele carrega em um navegador do usuário é mais parecido com isto:

<iframe src="http://example.com/page?x=y&fb_sig_in_iframe=1&fb_sig_locale=en_US&fb_sig_in_new_facebook=1&fb_sig_time=1246340245.3338&fb_sig_added=1&fb_sig_profile_update_time=1242155811&fb_sig_expires=1246345200&fb_sig_user=000000001&fb_sig_session_key=2.d13uVGvWVL4hVAXELgxkZw__.3600.1246345200-000000001&fb_sig_ss=mZtFjaexyuyQdGnUz1zhYTA__&fb_sig_api_key=46899e6f07cef023b7fda4fg2e21bc58&fb_sig_app_id=22209322289&fb_sig=bbc165ebc699b12345678960fd043033">

Facebook adiciona uma tonelada de coisas para o src. O parâmetro que lhe diz ID de Facebook do usuário é fb_sig_user (que é 000000001 aqui). Estou assumindo que seu aplicativo está configurado como um "FBML app", já que você provavelmente não iria usar um tag <fb:iframe> em uma "app Iframe". No entanto, o método de renderização é semelhante em ambos os casos, e você terá um monte de coisas extra para o seu documento src em um "Iframe app" também.

Este realmente só passa-lhe o ID de usuário do Facebook sobre a primeira carga do iframe, no entanto. operações subseqüentes dentro do iframe não terá acesso a esse ID de usuário, a menos que você passá-lo em torno de forma explícita.

Facebook Connect

.

Se você quiser interagir com Facebook de dentro do iframe, que é onde as bibliotecas Facebook Connect Javascript vem em Os melhores instruções sobre como configurar o Facebook Connect é provavelmente desta página wiki , mas ainda é um pouco obscura. Facebook Connect pode ser usado para ambos os sites completamente externos ou conteúdo apenas regular dentro de um iframe. Você cair na última categoria, por isso, se você seguir as instruções no link e usar a primeira linha de código na etapa 2 (para o FeatureLoader), você deve estar ok.

Uma vez que você incluiu o script FeatureLoader.js e chamou FB.init, você geralmente deve ser instalado e funcionando com FB Connect. Você deve ser capaz de interagir com o API a partir de então em diante. O método users.getLoggedInUser() lhe dará o ID de usuário atual dentro do iframe via JavaScript.

Espero que ajude.

Outras dicas

Note que a partir de Março de 2011, FB está se movendo para solicitações POST para iframe carga. Ele envia uma ação de formulário com method = "post" e target = "iframe_canvas", além de um input type = "escondido" com um "signed_request"

Você CNA usar a API do Facebook para obter o ID do usuário chamando

Users.getLoggedInUser

Você pode acessar esse valor, em seguida, usar echo () para acrescentar que a sua HTML como uma variável javascript, o que irá torná-lo disponível ao seu código Javascript.

Tente Env.user, tem o registrado no ID do usuário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top