Criando Aplicativos Facebook SDK v5 em PHP

Introdução

Este artigo esta atualizado e testado de acordo com a última versão de Graph API. No momento v2.3 2.4. Esta também baseado na versão 4.0.x 5 do SDK para PHP. A antiga versão do SDK (v3) se encontra depreciado.

Neste artigo vamos demonstrar como criar uma aplicação simples para o facebook usando a Graph API com o sdk v4.0.x 5 do php. Vamos criar uma simples aplicativo que realiza o Login no Facebook e obtém as informações básicas do usuário. Iremos presumir que a aplicação será hospedada em um servidor particular próprio.

Caso não tenha um servidor próprio, é possível configurar o aplicativo para rodar localmente no seu ambiente durante o desenvolvimento do mesmo (veremos como fazer isso mais adiante). Quando precisar publicá-lo em produção, terá que ter um servidor próprio.

Registrar conta como desenvolvedor

O primeiro passo para criar um aplicativo do facebook, é ter sua conta registrada como conta de desenvolvedor. Caso ainda não tenha criado nenhum aplicativo, esse será o seu primeiro passo. Acesso o link https://developers.facebook.com e clique no link Registrar agora!. Veja figura:

Registrar como desenvolvedor

Após clicar no link, basta seguir as orientações do passo a passo:

  1. Aceitar os termos de adesão
  2. Verificar sua conta enviando um código de verificação ao seu número de celular por sms ou recebendo uma chamada conforme sua opção de escolha. Outra opção de confirmar sua conta é informando um cartão de crédito.

Criando um novo Aplicativo

Após ter registrado usa conta do facebook como desenvolvedor será redirecionado automaticamente para a tela de criação de um novo aplicativo.

Outra opção para chegar na tela de criação de um novo aplicativo, acesse http://developers.facebook.com e clique no menu My Apps -> Add a New App.

Na tela de criação de um novo App, selecione a opção WWW -> Site, conforme imagem:

fb-new-app

Na tela seguinte, informa o nome do seu aplicativo e clique no botão Create New Facebook App ID conforme imagem:

fb-new-app-2

Na tela seguinte escolha uma categoria no qual o seu aplicativo se enquadre e clique no botão Create App ID:

fb-new-app3

Em seguida role a tela até o final, insira a URL onde o seu aplicativo será hospedado e clique em Next. Inicialmente o domínio inserido pode apontar para o seu ambiente local de desenvolvimento (veja mais abaixo como configurar). Posteriormente quando publicar o seu app em um outro servidor, produção por exemplo, basta alterar o valor deste campo na área de Settings do Aplicativo.

fb-new-app4

Independente se seu aplicativo ficar em http://www.minha-app-facebook.com.br/app1.php ou http://www.minha-app-facebook.com.br/app2.php , etc. Insira apenas o domínio neste campo e não a URL “completa”. Qualquer caminho usado dentro desse domínio será um caminho válido para o seu app.

É importante lembrar que seu você estiver usando uma porta diferente do padrão HTTP (80), deve ser informado no Site URL. Por exemplo, no caso da porta 8080: http://www.minha-app-facebook.com.br:8080

Neste momento o seu aplicativo já se encontra criado no Facebook.

Configurando ambiente local de desenvolvimento

Caso não tenha um servidor próprio e queira testar o aplicativo na sua própria estação de trabalho, configure o arquivo hosts da sua máquia conforme exemplo abaixo:

127.0.0.1    www.minha-app-facebook.com.br

Além dessa configuração no hosts, será necessário ter um ambiente configurado com no mínimo Apache e PHP. Sugiro as opções EasyPHP ou Xampp no caso do Windows. No Linux, basta configurar Apache ou Nginx com PHP.

Obtendo o App ID e o App Secret

Antes de continuarmos com a criação do código fonte, vamos ver como obter o App ID e o App Secret do seu aplicativo recém-criado para podermos configurar e utilizar o SDK.

Acesse o endereço http://developers.facebook.com, clique no menu My Apps -> MenuNovoApp (nome que você deu ao seu applicativo). Irá cair em uma tela conforme a figura abaixo.

fb-app-dashboard-1

Para obter o App Secret, clique em “Show” e informe a senha do seu usuário do facebook.

Caso precise alterar o Site URL (URL onde seu aplicativo esta hospedado), Clique no menu lateral Settings.

Criando seu aplicativo usando SDK para PHP

A maneira mais eficiente de instalar o novo SDK para PHP do facebook é através do composer. Crie o arquivo composer.json com o seguinte conteúdo:

{
  "require" : {
    "facebook/php-sdk-v4" : "~5.0"
  }
}

Instalando o composer:

curl -sS https://getcomposer.org/installer | php

Instalando o sdk:

php composer.phar install

Para testar o seu aplicativo, crie um arquivo php com o conteúdo abaixo no seu servidor. Lembrando-se que você dever parametrizar o App ID e App Secret (linhas 11 e 12):

Também é necessário parametrizar corretamente o $redirect_url fazendo que ele aponte para o próprio script. (Linha 65)

<?php
session_start(); // Sessao do php deve estar ativa
 
// datetimezone
date_default_timezone_set('America/Sao_Paulo');
 
// autoloader gerado pelo composer
require_once "vendor/autoload.php";
 
// configurar APP_ID e SECRET
define('APP_ID', '');
define('APP_SECRET', '');

// instancia
$fb = new Facebook\Facebook([
	'app_id'     => APP_ID,
	'app_secret' => APP_SECRET,
    'default_graph_version' => 'v2.4'
]);

if(isset($_SESSION['fb_access_token'])) {
    $accessToken = $_SESSION['fb_access_token'];

    // verifica validade e expiracao do token
    $oAuth2Client = $fb->getOAuth2Client();
    $tokenMetadata = $oAuth2Client->debugToken($accessToken);

    // valida token
    try {
        $tokenMetadata->validateAppId(APP_ID);
        $tokenMetadata->validateExpiration();

    } catch(Facebook\Exceptions\FacebookSDKException $e) {
        unset($accessToken);
        unset($_SESSION['fb_access_token']);
    }
} else {

    $helper = $fb->getRedirectLoginHelper();
    try {
        $accessToken = $helper->getAccessToken();
    } catch(Facebook\Exceptions\FacebookResponseException $e) {
        echo 'Graph returned an error: ' . $e->getMessage();
        exit;
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
        echo 'Facebook SDK returned an error: ' . $e->getMessage();
        exit;
    }
}

if(isset($accessToken)) {
    // Logged in!
    $_SESSION['fb_access_token'] = (string) $accessToken;

    try {
        $response = $fb->get('/me?fields=id,name', $accessToken);

        echo '<pre>';
        print_r($response->getDecodedBody());
        echo '</pre>';

    } catch(Facebook\Exceptions\FacebookResponseException $e) {
        echo 'Graph returned an error: ' . $e->getMessage();
        exit;
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
        echo 'Facebook SDK returned an error: ' . $e->getMessage();
        exit;
    } 
} else {
    $helper = $fb->getRedirectLoginHelper();

    $redirect_url = 'http://facebook-codes.local/v5/login.php'; 
    $loginUrl = $helper->getLoginUrl($redirect_url);
    echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}

Parabéns

Acredito que esse código seja uma aplicação mínima do Login de Facebook para PHP usando o SDK v4.0.x v5. Ela simplesmente conecta o usuário com o facebook, solicita que o usuário aceite o aplicativo e imprime na tela os dados básicos do usuário. Ele mantém a sessão do usuário com o aplicativo do facebook salva na sessão. Se fizer o refresh na página o app verifica se já existe uma sessão salva e irá reutiliza-la.

Indo Além

Facebook App: Requisitando permissões pela API do PHP

Comments

  1. By CHARLES

    Reply

    • mm By Douglas V. Pasqua

      Reply

    • mm By Douglas V. Pasqua

      Reply

      • Reply

        • mm By Douglas V. Pasqua

          Reply

  2. By André

    Reply

    • mm By Douglas V. Pasqua

      Reply

  3. Reply

    • mm By Douglas V. Pasqua

      Reply

  4. Reply

  5. Reply

    • mm By Douglas V. Pasqua

      Reply

  6. By Miguel

    Reply

    • mm By Douglas V. Pasqua

      Reply

  7. Reply

    • mm By Douglas V. Pasqua

      Reply

  8. By Pedro

    Reply

    • mm By Douglas V. Pasqua

      Reply

  9. Reply

    • mm By Douglas V. Pasqua

      Reply

  10. Reply

    • mm By Douglas V. Pasqua

      Reply

  11. By Robson

    Reply

    • mm By Douglas V. Pasqua

      Reply

      • By Robson

        Reply

  12. Reply

    • mm By Douglas V. Pasqua

      Reply

      • Reply

  13. By Gabriel Freitas

    Reply

    • mm By Douglas V. Pasqua

      Reply

      • By Gabriel Freitas

        Reply

        • By Gabriel Freitas

          Reply

          • mm By Douglas V. Pasqua

          • By Gabriel Freitas

  14. Reply

    • mm By Douglas V. Pasqua

      Reply

  15. By Gabriel Freitas

    Reply

    • mm By Douglas V. Pasqua

      Reply

  16. By Davi Lima

    Reply

    • mm By Douglas V. Pasqua

      Reply

      • By Davi Lima

        Reply

      • By Davi Lima

        Reply

        • mm By Douglas V. Pasqua

          Reply

          • By Davi Lima

  17. By Leandro

    Reply

    • mm By Douglas V. Pasqua

      Reply

  18. Reply

    • mm By Douglas V. Pasqua

      Reply

  19. By Pedro

    Reply

  20. By Pedro

    Reply

  21. Reply

    • mm By Douglas V. Pasqua

      Reply

  22. By Tatiana

    Reply

    • mm By Douglas V. Pasqua

      Reply

  23. By Sandro

    Reply

    • mm By Douglas V. Pasqua

      Reply

      • By Sandro

        Reply

        • mm By Douglas V. Pasqua

          Reply

  24. Reply

    • mm By Douglas V. Pasqua

      Reply

  25. By cacamaua

    Reply

    • mm By Douglas V. Pasqua

      Reply

  26. Reply

  27. By Rodrigo

    Reply

    • mm By Douglas V. Pasqua

      Reply

  28. Reply

    • mm By Douglas V. Pasqua

      Reply

  29. Reply

    • mm By Douglas V. Pasqua

      Reply

  30. By Edmar Souza

    Reply

    • mm By Douglas V. Pasqua

      Reply

  31. By Sandro

    Reply

    • mm By Douglas V. Pasqua

      Reply

Deixe um comentário

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: