Continuando com nossa série de postagens sobre a API SDK em PHP do Facebook, hoje mostrei como implementar um sistema de login com o Facebook com permissões.
Se você não viu o post anterior, do qual há uma introdução, clique aqui.
Permissões:
Bom, para o login de usuários em seu site, são necessários permissões concebidas por esse usuário à sua aplicação. Essas permissões servem para usar diferentes recursos, como postagens no mural, informações do usuário, informações dos amigos dos usuários etc.
Por exemplo: sua aplicação vai, ao se cadastrar, usar o e-mail do usuário, ao realizar determinada ação em seu site, uma postagem no mural do usuário etc.
A lista com todas as permissões se encontra aqui: https://developers.facebook.com/docs/reference/login/
Login:
O login depende de uma URL gerada pelo Facebook de acordo com as permissões requisitadas pela aplicação:
$permissions = 'email, publish_stream'; $redirect_uri = 'http://meusite.com/singup';//Página de retorno após o login $parameters = [ 'scope' => $permissions, 'redirect_uri' => $redirect_uri, 'display' => 'popup' ]; $loginUrl = $fb->getLoginUrl( $parameters );
Logout:
O Facebook também fornece a opção de logout no próprio Facebook:
$next = 'http://meusite.com'; $parameters = [ 'next' => $next ]; $logoutUrl = $fb->getLogoutUrl( $parameters );
mas se o logout for somente acontecer na sua aplicação, a função BaseFacebook::destroySession() destrói todas as sessions usadas pelo Facebook:
$fb->destroySession(); header( 'Location: http://meusite.com' );
Implementando:
Com esses recursos, o código ficaria mais ou menos assim:
$appConfig = [ 'appId' => 'APP_ID', 'secret' => 'APP_SECRET' ]; $fb = new Facebook( $appConfig ); /** * @return ID do usuário logado ou verifica se está logado */ $user = $fb->getUser(); if( $user ){ try{ //Operações com usuário logado echo '<a href="' . $logoutUrl . '">Logout</a>'; }catch( FacebookApiException $e ){ $logoutUrl = '/logout.php'; header( 'Location: ' . $logoutUrl ); } }else{ $permissions = 'email, publish_stream'; $redirect_uri = 'http://meusite.com/singup';//Página de retorno após o login $parameters = [ 'scope' => $permissions, 'redirect_uri' => $redirect_uri, 'display' => 'popup' ]; $loginUrl = $fb->getLoginUrl( $parameters ); echo '<a href="' . $loginUrl . '">Login</a>'; }
Ao clicar em login, algo do tipo irá aparecer para o usuário:
Bem, no post de hoje é isso. No próximo mostrarei como fazer postagens na timeline do usuário logado. 😀