Hace pocos meses, Microsoft lanzó el sistema OAuth para sitios web cliente, lo que permite obtener datos válidos del usuario de la base de datos de Hotmail y Outlook. Anteriormente, ya se publicaron artículos sobre cómo hacer hacer una validación via OAuth usando credenciales de Facebook, Google y Twitter. Ahora este artículo explica cómo implementar en PHP una conexión OAuth usando credenciales de Microsoft Live (Hotmail y/o Outlook). Seguro que esto te servirá en tus proyectos web para ahorrarte el mail de activación post-registro.
El tutorial contiene una carpeta llamada “lib” con cinco archivos PHP:
lib -- http.php -- oauth_client.php // Librería cliente OAuth index.php home.php microsoft_login.php // Archivo de login Microsoft db.php logout.php
Base de datos
La base de datos de ejemplo consta de una tabla users con las columnas id, email, oauth_uid, oauth_provider y username.
CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, full_name VARCHAR(200), first_name VARCHAR(100), last_name VARCHAR(100), email VARCHAR(200), gender VARCHAR(10), birthday VARCHAR(20), provider_id VARCHAR(100) );
Paso 1: Crear una Aplicación Microsoft
Click aquí para lanzar el Centro para desarrolladores de Live Connect y dale un nombre a la aplicación de prueba que vamos a crear.
Microsoft Live Oauth Connect
Paso 2: Añadir tu dominio
Tras el paso anterior, Microsoft te proporciona un ID de cliente y una Clave secreta de cliente. Indica la URL correspondiente en Dominio de redirección.
Paso 3: Información básica
Aquí introducimos los detalles de la aplicación
Una vez completada esta parte en el Centro para desarrolladores de Live Connect, vemos el detalle de los archivos:
microsoft_login.php
Tienes que modificar los valores de client_id y client_secret con los obtenidos en el paso 2 anterior.
$client->redirect_uri = 'http://'.$_SERVER['HTTP_HOST']. dirname(strtok($_SERVER['REQUEST_URI'],'?')).'/microsoft_login.php'; $client->client_id = 'Microsoft Client ID'; $client->client_secret = 'Microsoft Client Secret';
home.php
Contiene el código PHP encargado de insertar en la tabla de usuarios users los detalles de las sesiones establecidas via Microsoft OAuth.
<?php session_start(); include('db.php'); //Conectar con la Base de datos. if (!isset($_SESSION['userdata'])) { // Redirigir a la pagina inicial de la aplicacion. header("location: index.php"); } else { $userdata=$_SESSION['userdata']; $name =$userdata->name; $microsoft_id =$userdata->id; $first_name =$userdata->first_name; $last_name =$userdata->last_name; $gender=$userdata->gender; $email=$userdata->emails->account; $email2=$userdata->emails->preferred; $locale=$userdata->locale; $birth_day=$userdata->birth_day.'-'.$userdata->birth_month.'-'.$userdata->birth_year; $sql=mysql_query("insert into users(full_name,first_name,last_name,email,gender,birthday,provider_id) values("$name","$first_name","$last_name","$email","$gender","$birth_day","$microsoft_id")"); } ?>
db.php
Archivo de configuración para el acceso a la base de datos.
<?php $mysql_hostname = "localhost"; $mysql_user = "username"; $mysql_password = "password"; $mysql_database = "databasename"; $bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("No se pudo conectar con la base de datos"); mysql_select_db($mysql_database, $bd) or die("No se pudo seleccionar la base de datos"); ?>
Artículo original en 9lessons.info. Traducido al español con autorización del autor Srinivas Tamada.
Artículos relacionados:
- Permite el login en tu web con la cuenta de Facebook,…
- Snippet – 3 maneras de poner puntos separadores de…
- Snippet – Calcular la letra del NIF
- OverAPI Chuletarios o “cheat sheets” para…
- Listado de países en formatos HTML, JSON, PHP, SQL, CSV,…