Magazine

Login con Microsoft Live OAuth Connect

Publicado el 09 febrero 2013 por Biriicom @biriiCom

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.

Login with Microsoft Live OAuth Connect

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

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.

ID de cliente y Clave secreta de cliente

Paso 3: Información básica
Aquí introducimos los detalles de la aplicación

birii-microsoft-live-connect-oauth-informacion-basica

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 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,…

Volver a la Portada de Logo Paperblog

Dossier Paperblog