Está en la página 1de 4

Cmo autentificar usuario con Facebook Connect en PHP

y MySQL 4/4
24feb2011Categoria: DESARROLLO, mysql, PHP, TUTORIALESAutor: admin
El proceso de autenticacin tiene tres fases:
1. El script genera una url preguntando por los permisos del usuario.
2. Facebook retorna una url con los parmetros solicitados va GET.
3. Los parmetros pasados por GET, autentifican la sesin.
Hagamos una prueba de logueo rpida para ver si todo esta correcto por ahora. Creamos un
archivo llamado "login_Face.php" y guardamos en la misma ruta el archivo facebook.php que
hemos obtenido:

PLAIN TEXT
PHP:
1. # Requerimos la librera
2. require("facebook.php");
3.
4. # Cramos el objeto Facebook indicando nuestros datos de API
5. $facebook = new Facebook(array(
6. 'appId' => 'YOUR_APP_ID',
7. 'secret' => 'YOUR_APP_SECRET',
8. 'cookie' => true
9. ));
10.
11. # Comprueba si has iniciado sesin
12. $session = $facebook->getSession();
13.
14. if(!empty($session)) {
15. # Activa la sesin, y obtiene el USERID con (getUser()) y la informacin del
usuario con (api->('/me')
16. try{
17. $uid = $facebook->getUser();
18. $user = $facebook->api('/me');
19. } catch (Exception $e){}
20.
21. if(!empty($user)){
22. # Si la info es correcta, lo imprimimos (en este lugar es donde podemos aadir
las rutinas de login y registro)
23. print_r($user);
24. } else {
25. # Si hay un error, matamos el script
26. die("There was an error.");
27. }
28. } else {
29. # Si la sesin no est activada la generamos
30. $login_url = $facebook->getLoginUrl();
31. header("Location: ".$login_url);
32. }
Una vez tenemos listo el archivo "login_Face.php" lo ejecutamos desde el navegador, por ejemplo
en mi caso sera:
http://localhost/tuto_facebook/login_Face.php
Si al ejecutar este archivo nos redirige hacia Facebook pidindonos las credenciales vamos por
buen camino.
Posibles errores de Facebook Connect
Entre los posibles errores que te puedes encontrar al hacer ejecutar el archivo login_face.php
son:
1. Si al redirigir a Facebook nos sale un error, hay que revisar la configuracin.
2. Uncaught CurlException: 60: SSL certificate problem, verify that the CA cert is OK: En este caso la
solucin sera, abrir el archivo facebook.php y en el mtodo makeRequest() buscar la lnea donde pone:
PLAIN TEXT
PHP:
1. $opts = self::$CURL_OPTS;
y aadir justo despus
PLAIN TEXT
PHP:
2. opts[CURLOPT_SSL_VERIFYPEER] = false;
Una vez tenemos bien la conexin entre nuestro archivo y Facebook, vamos a utilizarlo con
nuestra base de datos. As que para poder interactuar, lo primero que haremos ser conectarnos
a la base de datos:
PLAIN TEXT
PHP:
1. # Tenemos una session activa; Comprobamos si el usuario ya est registrado.
2. $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND
oauth_uid = ". $user['id']);
3. $result = mysql_fetch_array($query);
4.
5. # SI no, lo aadimos a la base de datos
6. if(empty($result)){
7. $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username)
VALUES ('facebook', {$user['id']}, '{$user['name']}')");
8. $query = msyql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());
9. $result = mysql_fetch_array($query);
10. }
Lo siguiente que vamos hacer es trabajar con el registro y autenticacin de los usuarios. Es
ahora cuando vamos a utilizar nuestra base de datos.
Como siempre, lo primero es conectarnos a la base de datos y comprobar si el usuario est
registrado, en el caso que no lo est, habr que insertarlo:
PLAIN TEXT
PHP:
1. //conectamos cno la base de datos con nuestras credenciales host, usuario y
password.
2. mysql_connect('tuhost', 'tu_usuario', 'tu_password');
3.
4. //Seleccionamos nuestra base de datos
5. mysql_select_db('tu_basededatos');
6. //Comprobamos si el usuario existe
7. $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND
oauth_uid = ". $user['id']);
8. $result = mysql_fetch_array($query);
9. //Si no existe, lo aadimos a la tabla users
10. if(empty($result)){
11. $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username)
VALUES ('facebook', {$user['id']}, '{$user['name']}')");
12. $query = msyql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());
13. $result = mysql_fetch_array($query);
14. }
Con esto ya tendramos creado el usuario en la base de datos, pero se nos olvida algo verdad?,
pues s, se nos olvida la sesin, ya que si el usuario existe en la base de datos, tenemos que
crearla, por eso hemos vuelto ha hacer una consulta a users para as tener en la variable result
los datos.
Comprobamos si la variable result tiene datos, en tal caso creamos la sesin. Esto lo tenemos que
aadir justo despus del cdigo mostrado ms arriba:
PLAIN TEXT
PHP:
1. if(!empty($user)){
2. # ...
3.
4. if(empty($result)){
5. # ...
6. }
7.
8. # Crear los valores de la sesin con los datos de Facebook connect
9. $_SESSION['id'] = $result['id'];
10. $_SESSION['oauth_uid'] = $result['oauth_uid'];
11. $_SESSION['oauth_provider'] = $result['oauth_provider'];
12. $_SESSION['username'] = $result['username'];
13. }
Ahora que tenemos todos los datos necesarios en la variable session ya podemos utilizarlo en toda
nuestra aplicacin.
Con esto, ya hemos completa este tutorial sobre como loguear a un usuario con Facebook
connect en nuestra pgina web. Espero que os haya gustado.

También podría gustarte