Conectar-se
Quem está conectado
14 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 14 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 28/08/2010
Número de Mensagens : 599
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

[TUTORIAL] Função facebook_graph_request

em Dom 26 Jan 2014, 21:23
Reputação da mensagem: 100% (2 votos)
Título: Função facebook_graph_request
Versão do GM: GameMaker Studio
Dificuldade: Intermediário
Complemento: [TUTORIAL] Funções do Facebook, [TUTORIAL] Inclua seu jogo no Facebook
Tags: facebook, jogo online, nome usuario do facebook, informacoes do facebook

Oi pessoal,

Estarei dando continuidade aos tutoriais com relação a integração dos jogos do GMS com o Facebook.

Fiz um tutorial antes com algumas funções (link acima) e deixei essa função para depois para poder dar um exemplo melhor de como ela funciona.

Vamos primeiro a tradução do help do GMS:

facebook_graph_request(graph_path, httpMethod, ds_map_parameters, ds_map_return)
Essa função é usada para interagir com a API gráfica do Facebook

Com essa função você pode interagir com a API gráfica do Facebook. O argumento 'graph_path' é onde você define a parte da API que você deseja acessar, que pode ser a lista de amigos do usuário, outros aplicativos ou um evento qualquer. O caminho exato pode ser definido usando os termos explicados no próprio facebook. Clique aqui para ver.

Após escolher o caminho das informações que pretende usar, você deve definir o argumento 'httpMethod', que é costumeiramente usado POST ou GET, mas também o Facebook permite usar o método DELETE.


  • POST: Envia uma informação
  • GET: 'Pega' uma informação
  • DELETE: Apaga uma informação


O próximo argumento é um pouco mais complexo e ele requer que você crie e preencha um ds_map com as informações corretas que o GameMaker: Studio irá converter em json (linguagem que o Facebook entende) automaticamente quando enviar para a API do Facebook. A informação que você incluirá no ds_map irá depender muito do caminho que você escolheu pra usar e de uma completa lista de valores que pode ser encontrado nele. Exemplos no final.

Finalmente, nós temos um argumento para estocar qualquer informação que o facebook nos manda de volta. Essa informação vem na linguagem json e o GameMaker a converte em um ds_map. Para ele trabalhar corretamente, você deve ter criado um ds_map anteriormente, e se o ds_map já estiver sendo usado e conter outras informações, ele será limpo por essa função antes das novas informações serem adicionadas.

É muito importante que vocês leiam a documentação da API do Facebook, para conhecer os valores que são possíveis de obter e como exatamente você deve estar esperando recebê-lo

O Facebook tem uma página de testes onde você pode checar os diferentes caminho e ver exatamente as funções que eles retornam pra você. Página de testes do Facebook Graph API

Vamos agora ao exemplo que vem no próprio GameMaker Studio:

Evento MOUSE_LEFT_RELEASE
Código:

var wallPostMap; //Cria uma variável chamada wallPostMap
wallPostMap = ds_map_create(); //Transforma a variável em um ds_map
ds_map_add(wallPostMap, "message", "Escreva sua mensagem aqui..."); //Adiciona a chave 'message' com a mensagem que você quer
ds_map_add(wallPostMap, "picture", "http://meu_site.com/minha_imagem.jpg"); //Adiciona a chave 'picture' com o link para a imagem
ds_map_add(wallPostMap, "link", "http://meu_site.com"); //Adiciona a chave 'link' com um link para onde o usuário será redirecionado ao clicar
ds_map_add(wallPostMap, "name", "Clique aqui para abrir o link"); //Adiciona a chave 'name' que é usada para substituir o link
ds_map_add(wallPostMap, "caption", "meu_site.com - caption"); //Adiciona a chave 'caption' que é o subtítulo do link
ds_map_add(wallPostMap, "description", "Minha descrição... lbalablablabalabl albala ba lab laba albalbalba lab lab al a"); //Adiciona a chave 'description' que inclui uma descrição no post
facebook_graph_request("me/feed", "POST", wallPostMap, -1); //Envia o post ao Facebook
ds_map_destroy(wallPostMap); //Destrói o ds_map



O código acima irá criar um ds_map e armazena-lo em uma variável local chamada 'wallPostMap'. Ele então preenche o ds_map com os pares de chaves e valores que são necessários para postar uma imagem e um texto no mural do usuário atual. Finalmente, ele envia a requisição ao Facebook e apaga o ds_map da memória.

Vamos entender melhor a linha
Código:
facebook_graph_request("me/feed", "POST", wallPostMap, -1);

O primeiro argumento 'me/feed' se refere a parte da API do Facebook a ser usada, vou explicar algumas:

NomeAcesso aUse para publicar/acessar:
me/achievementsConquistas realizadas nos jogos do FacebookConquistas do seu jogo
me/albumsÁlbuns de fotos que o usuário criouNovos álbuns
me/apprequestsPedidos de aplicativos do FacebookPedidos do seu aplicativo
me/feedPosts e links publicados pelo usuário, ou por outros em seu muralPosts, links e atualizações
me/friendlisA lista de amigos do usuárioLista de amigos
me/notificationsNotificações de AplicativosNotificações
me/scoresAs potuações que o usuário recebeu nos jogosPontuações
Listei aqui apenas algumas das dezenas de possibilidades que o Facebook disponibiliza para você acessar, e ATENÇÃO: de acordo com o item requerido, você deve ter a devida permissão do usuário ao efetuar o login!

Mais informações CLIQUE AQUI

O segundo argumento 'POST' quer dizer que você está enviando uma informação, ou seja, POSTANDO uma informaçãos. Quanto ao método 'GET', vamos ver um exemplo agora:

Criem um objeto e no evento CREATE, escreva:
Código:

var controle, //Cria duas variáveis...
dados; //controle e dados

controle = 0; //Seta controle igual a zero
dados = ds_map_create(); //Transforma dados em um ds_map

No evento STEP:
Código:

If (facebook_status() == 'AUTHORISED' and controle == 0){ //Se o usuário autorizou seu aplicativo ao acesso dos dados, faz
controle = 1; //Controle é igual a um, para não ficar repetindo todo step a mesma função
facebook_graph_request("me", "GET", -1, dados); // Usa o graph_request para ter acesso ao local 'me' e gravar os dados no ds_map 'dados' que criamos anteriormente
}

Evento DRAW:
Código:
draw_text(x,y,'Primeiro nome: '+ds_map_find_value(dados, 'first_name')); //Utiliza o ds_map 'dados' para pegar o primeiro nome do usuário

Outras informações que você pode pegar usando esse método:

CampoDescriçãoTipo
birthdayData de nascimentoString no formato MM/DD/YYYY
emailE-mailstring
first_namePrimeiro nomestring
genderGênerostring
last_nameÚltimo nomestring
nameNome completostring
Tem mais aqui, como local de nascimento, relacionamento, etc.

PROBLEMAS ENCONTRADOS EM HTML5

Estou testando e usando esses códigos para jogos em HTML5, e encontrei alguns problemas ao usar os mesmos devido aos navegadores.

ex: Ao tentar utilizar o comando POST, ocorria o seguinte:

Chrome: não enviava
Opera: enviava ok
Firefox: não conectava

Embora que o problema é solucionado ao efetuarmos a LIMPEZA DO CACHE.

Acredito que deve ser devido a estar testando ainda o sistema, espero que fique bom quando estiver valendo Happy

Bom pessoal, quem quiser se aprofundar mais a respeito da API gráfica do Facebook, pode acessar esse link, é preciso ter uma noção de inglês para entender, porque ainda não existe tradução para a página (um dos motivos pelo qual eu postei esse tutorial e os outros)
avatar
Ranking : Sem avaliações
Data de inscrição : 14/04/2011
Número de Mensagens : 691
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 162

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [TUTORIAL] Função facebook_graph_request

em Seg 27 Jan 2014, 01:00
Mais um excelente tutorial aprovado com louvor.
Muito obrigado por compartilhar.
avatar
Ranking : Nota A
Notas recebidas : A+A
Data de inscrição : 20/03/2010
Número de Mensagens : 1134
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 108

Prêmios
   : 1
   : 0
   : 1
Ver perfil do usuáriohttps://www.facebook.com/seito.washiro.7

Re: [TUTORIAL] Função facebook_graph_request

em Seg 27 Jan 2014, 01:42
exelebte tuto.

bem explicado e facil de entender.

eu sempre tive curiosidade em usar as funçoes do face, mas nem tentava pq temia acabar fazendo algo errado e travando meu perfil.
avatar
Data de inscrição : 04/02/2009
Número de Mensagens : 108
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   :
   : 1
   :
Ver perfil do usuário

Re: [TUTORIAL] Função facebook_graph_request

em Seg 27 Jan 2014, 11:19
Parabéns, excelente tutorial =D
Data de inscrição : 29/05/2012
Número de Mensagens : 929
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 33
Ver perfil do usuário

Re: [TUTORIAL] Função facebook_graph_request

em Seg 20 Out 2014, 11:55
tentei colocar um botão de curtir no meu app só que é bem complexo e por falta e exemplo "engine" eu consegui colocar só um link externo pra curtir, como fiz..
url_open('http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2Fpages%2FMega-Sena%2F360838920666271%3Fref%3Dhl&width&layout=standard&action=like&show_faces=true&share=true&height=80&appId=450552958328560');

alguem pode me ajudar como seria no android, vlw
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 147

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: [TUTORIAL] Função facebook_graph_request

em Ter 21 Out 2014, 00:56
caraca, esse tutorial esta muito bom... mais, tem como postar essa imagem carregando-a direto do aparelho android???
tipo um sprite_add com um get_open_filename...?

Grato pelo tutorial e pela provavel resposta
Data de inscrição : 29/05/2012
Número de Mensagens : 929
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 33
Ver perfil do usuário

Re: [TUTORIAL] Função facebook_graph_request

em Sex 24 Out 2014, 13:00
estou recebendo a mensagem "was not called or facebook appid is missing" estou confuso fiz td certinho..

usei esse exemplo ao clicar no mouse left pressed

Código:
var wallPostMap; //Cria uma variável chamada wallPostMap
wallPostMap = ds_map_create(); //Transforma a variável em um ds_map
ds_map_add(wallPostMap, "message", "Escreva sua mensagem aqui..."); //Adiciona a chave 'message' com a mensagem que você quer
ds_map_add(wallPostMap, "picture", "http://meu_site.com/minha_imagem.jpg"); //Adiciona a chave 'picture' com o link para a imagem
ds_map_add(wallPostMap, "link", "http://meu_site.com"); //Adiciona a chave 'link' com um link para onde o usuário será redirecionado ao clicar
ds_map_add(wallPostMap, "name", "Clique aqui para abrir o link"); //Adiciona a chave 'name' que é usada para substituir o link
ds_map_add(wallPostMap, "caption", "meu_site.com - caption"); //Adiciona a chave 'caption' que é o subtítulo do link
ds_map_add(wallPostMap, "description", "Minha descrição... lbalablablabalabl albala ba lab laba albalbalba lab lab al a"); //Adiciona a chave 'description' que inclui uma descrição no post
facebook_graph_request("me/feed", "POST", wallPostMap, -1); //Envia o post ao Facebook
ds_map_destroy(wallPostMap); //Destrói o ds_map
o que pode ser??
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum