Back-End

16 nov, 2018

Acessando a API do Facebook em PHP com o php-graph-sdk

Publicidade

Fala pessoal, tudo bom? Voltamos hoje com mais uma biblioteca massa feita em PHP. E nada melhor do que falar um pouco sobre o SDK para utilizarmos com a grande rede social, o Facebook.

O próprio Facebook disponibiliza no seu github o SDK em PHP para a API Graph deles, hoje iremos mostrar como utilizaremos esse SDK para acessar a API e consumir alguns dados do Facebook.

Antes de começar a integração, você deverá criar um app no site oficial de developers do facebook.

Para baixar o SDK basta usar no composer:

composer require facebook/graph-sdk

No exemplo aqui vamos simular um login em uma conta facebook, num aplicativo fictício chamado Pokebot.

Antes de iniciar, você deverá capturar alguns valores, para isso você irá nas configurações->básico do seu aplicativo no site developers.facebook.com

Primeiramente iremos criar um arquivo login.php dentro da pasta do projeto, onde iremos utilizar um helper de redirect para realizar o login na conta do facebook.

<?php

require_once 'vendor/autoload.php'; //autoload do composer

$fb = new Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.10',
  ]);

$helper = $fb->getRedirectLoginHelper();

$permissions = ['email']; // Permissões Opcionais
$loginUrl = $helper->getLoginUrl('https://localhost/fb-callback.php', $permissions); //Url de retorno onde iremos ter a validação do login. O domínio deverá ser configurado no seu app.

echo '<a href="' . $loginUrl . '">Logar no seu Facebook!</a>';

Agora você irá criar o arquivo fb-callback.php na mesma pasta, nesse exemplo iremos exibir o access token e o nome do usuário que está logado:

<?php

require_once 'vendor/autoload.php';

if(!session_id()) {
    session_start();
}

$fb = new Facebook\Facebook([
    'app_id' => {app-id}',
    'app_secret' => '{app-secret}',
    'default_graph_version' => 'v2.10',
]);

$helper = $fb->getRedirectLoginHelper();

$_SESSION['FBRLH_state']=$_GET['state']; //definindo o valor de state na session
$_SESSION['fb_access_token'] = (string) $accessToken; //definindo o access token na session

try {
    $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
    echo 'Deu erro no Graph: ' . $e->getMessage();
    exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    echo 'Deu erro no SDK: ' . $e->getMessage();
    exit;
}

if (! isset($accessToken)) {
    if ($helper->getError()) {
        header('HTTP/1.0 401 Unauthorized');
        echo "Error: " . $helper->getError() . "\n";
        echo "Error Code: " . $helper->getErrorCode() . "\n";
        echo "Error Reason: " . $helper->getErrorReason() . "\n";
        echo "Error Description: " . $helper->getErrorDescription() . "\n";
    } else {
        header('HTTP/1.0 400 Bad Request');
        echo 'Bad request';
    }
    exit;
}

// Dados do Access Token:
echo '<h3>Access Token</h3>';
var_dump($accessToken->getValue());

try {
    $response = $fb->get('/me', $accessToken->getValue());
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
    echo 'Deu erro no Graph: ' . $e->getMessage();
    exit;
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
    echo 'Deu erro no SDK: ' . $e->getMessage();
    exit;
}

$me = $response->getGraphUser();
echo '<br/><br/> Logado como: ' . $me->getName();

Agora, para testar iremos utilizar o servidor embutido do PHP:

php -S localhost:80

Dai é só seguir o fluxo, acessando no browser localhost/login.php:

 

Bom, esse é o pontapé inicial para você utilizar o SDK do Graph para realizar integrações com o Facebook. O ideal é que você leia a documentação do Graph SDK e do Facebook Developers.

Espero que ajude você a começar suas integrações :), um grande abraço, até a próxima!