Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Brambilla

Zend Framework login com facebook

Recommended Posts

Boa tarde, não tenho conhecimento sobre o Zend Framework

Criei um faceAction no logincontroller.php

public function faceAction()
{
$fb_cad = $this->_getParam('fb_cad');
$code = $this->_getParam('code');
$this->_helper->layout->disableLayout();    
if($_SERVER['REQUEST_METHOD'] == 'GET' && isset($code))
{
$appId = 'xxxxxxxxx';
$appSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxx';        
$redirectUri = urlencode('http://site.com.br/login/face?fb_cad=1'); // Obtém o código da query string
// Monta a url para obter o token de acesso e assim obter os dados do usuário
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=".$appId."&redirect_uri=".$redirectUri."&client_secret=".$appSecret."&code=".$code;
$ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $token_url);
curl_setopt($ch, CURLOPT_USERAGENT , isset( $_SERVER[ 'HTTP_USER_AGENT' ] ) ? $_SERVER[ 'HTTP_USER_AGENT' ] : "Mozilla/4.0" );
curl_setopt($ch, CURLOPT_HEADER, 0);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);    curl_close($ch);
$token = explode('=', $response);    $access_token = $token[1];
// echo $token_url;
// echo '<br><pre>'; print_r($response); echo '<pre>';
if(isset($access_token))
{
     $graph_url = "https://graph.facebook.com/me?access_token=".$access_token;
     $user = json_decode(file_get_contents($graph_url));
     //    echo '<pre>'; print_r($user); echo '</pre>';
if(isset($user->email))
     {
     /*    A partir daqui, você já tem acesso aos dados usuário, podendo armazená-los em sessão, cookie ou já pode inserir em seu banco de dados para efetuar autenticação.    */
     $email = addslashes($user->email);
     //echo '<pre>'; print_r($user); echo '</pre>';
     /* ------------------------------------------------------ */
// Aqui é o trecho que faz o login normalmente,
// eu precisaria fazer o login somente pelo email e sem a senha
// a partir daqui não consigo seguir para frente

if ($login->isValid($data)) {
$dados = $login->getValues();
$autentique = Default_Model_Login::login($dados['login'], $dados['senha']);
if (isset($autentique['success'])) {
$cesta = $_SESSION['CARRINHO'];
if (!empty($_COOKIE['CARRINHO']))
$cesta = $_COOKIE['CARRINHO'];
$cesta = unserialize($cesta);
$this->_redirect($refer);
}
else {
$this->_helper->flashMessenger(array('alert alert-message' => $autentique['error']));
$login->populate($data);
}            
     }
/* ------------------------------------------------------ */                    
}
else    { $erro = 3; $msgErro = 'Ops! Problemas em capturar os dados do Facebook, favor tentar mais tarde'; }
}
else    { $erro = 4; $msgErro = 'Ops! Problemas em capturar os dados do Facebook, favor tentar mais tarde'; }
if($erro > 0)
{
?>
<center><div style="height:250px" id="divFace"><div class="geraIframe" style="color:#999; font-size:16px; margin:0 auto; padding:15px; margin-top:50px"
            align="center"><?php echo '000'.$erro.': '.$msgErro;?><br /><br /><a href="http://unearte.com.br/" class="botao_lar">Página Inicial</a></div></div></center>
            <?php     
            }
else if($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['error']))
    {
    echo "<script type=\"text/javascript\">window.location='http://unearte.com.br';</script>";
    }
}
 

Destaquei o trecho que não estou conseguindo prosseguir

precisava ver se o email existe no banco e efetuar o login

 

Obrigado

Att. Brambilla

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.