Facebook sdk, publicação offline no mural do usuário com access token
Introdução
Neste artigo vamos aprender como realizar publicações no mural do usuário mesmo o usuário estando offline na sua aplicação do facebook. A publicação é feita no feed de notícias, ficando disponível para todos amigos.
Para que seja possível publicar no mural do usuário offline, vamos precisar dos seguintes procedimentos:
- É necessário que o usuário tenha acessado sua aplicação em algum momento e ter fornecido a permissão de publicação chamada publish_stream.
- Guardar o identificador do usuário do facebook em nosso banco de dados.
- Gerar e armazenar o access token do nosso aplicativo.
Com posse desses dados, podemos seguir adiante no nosso script de publicação offline.
Primeiro, vamos a um exemplo simples de como obter o ID do usuário no facebook e solicitar a permissão publish_stream. Depois veremos como obter o access token do seu aplicativo e por final, um script que demonstra como fazer a publicação no mural do usuário com access token.
Solicitando permissão de publicação e obtendo o ID do facebook
Em um primeiro instante, o usuário precisa acessar nossa aplicação e fornecer a permissão publish_stream. Faça essa implementação em seu aplicativo de acordo com suas próprias regras. Segue abaixo um script simples que realiza as operações que necessitamos. Utilize-o adaptando de acordo com sua necessidade.
<?php // incluir a lib fo facebook require 'facebook-php-sdk-master/src/facebook.php'; // Cria a instancia da aplicacao, informando o appid e o secret $facebook = new Facebook(array( 'appId' => 'APP_ID', 'secret' => 'SECRET', )); $user_id = $facebook->getUser(); if ($user_id) { // usuario logado // solicitar permissao try { $permissions = $facebook->api("/me/permissions"); if(! (array_key_exists('publish_stream', $permissions['data'][0]) )) { header("Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream"))); exit; } } catch (FacebookApiException $e) { error_log($e); $user = null; } // // $user_id e o id do usuario no facebook // salvar o ID do usuario em banco echo $user_id; } else { // usuario nao logado, solicitar autenticacao $loginUrl = $facebook->getLoginUrl(); header("Location: $loginUrl"); }
Mais detalhes de como solicitar permissões pelo aplicativo, acessar meu aritgo Facebook App: Requisitando permissões pela API do PHP
Obtendo o access token do seu aplicativo
Para que seja feita a publicação no mural do usuário com ele estando offline de seu aplicativo, é necessário termos em mão o access token do nosso aplicativo.
Para gerar o access token é simples, basta acessar a URL abaixo, substituindo os campos YOUR_APP_ID e YOUR_APP_SECRET pelos respectivos dados do seu aplicativo.
A resposta da URL acima, deverá retornar no seguinte formato:
access_token=YOUR_APP_ACCESS_TOKEN
Salve o access token do seu aplicativo em um lugar onde poderá recuperá-lo mais tarde. (Normalmente em um banco de dados).
Expiração do access token
O access token do seu applicativo é assinado e associado ao seu APP_ID e SECRET. Portanto, o access token do aplicativo não expira, a não ser caso você resetar o seu APP_ID e SECRET.
Caso o usuário tenha removido seu aplicativo da lista de Aplicativo Configurados, você também não conseguirá mais postar no mural dele. Portanto, seja prudente ao realizar as publicações. Avise o usuário sobre a sua intenção de publicação no momento que o usuário ingressar no seu aplicativo.
Aplicativo de publicação
Segue abaixo um script simples que realiza a publicação no mural do usuário, sem a necessidade dele estar online no seu aplicativo.
<?php // incluir a lib fo facebook require 'facebook-php-sdk-master/src/facebook.php'; // Cria a instancia da aplicacao, informando o appid e o secret $facebook = new Facebook(array( 'appId' => 'APP_ID', 'secret' => 'SECRET', )); // dados para envio da publicacao $feed_data = array( "message" => "Youtube", "name" => "Site do Youtube", "link" => "http://www.youtube.com", // link da publiccao "caption" => "www.youtube.com", "access_token" => "YOUR_APP_ACCESS_TOKEN", ); try { // publica foto na timeline $dados = $facebook->api("/ID_USUARIO/feed", "post", $feed_data); echo "Foto publicada com sucesso!"; } catch (Exception $e) { echo "<pre>"; var_dump($e); echo "</pre>"; }
Lembre-se de substituir os seguintes parâmetros:
- APP_ID: ID do seu aplicativo.
- SECRET: SECRET do seu aplicativo.
- YOUR_APP_ACCESS_TOKEN: access token do seu aplicativo.
- ID_USUARIO: ID do usuário que deseja publicar no mural.
Para mais detalhes de como realizar publicações, verificar o artigo Facebook php sdk, postando mensagens no mural do usuário
Ler Post Completo | Make a Comment ( 4 so far )