Visualizzazione post con etichetta OAuth. Mostra tutti i post
Visualizzazione post con etichetta OAuth. Mostra tutti i post

lunedì 12 agosto 2013

Autenticazione OAuth2 con Facebook

L'autenticazione via Facebook e' la piu' semplice delle applicazioni Facebook e per poterla gestire si deve prima creare una applicazione Facebook dal menu che si trova in alto a sinistra della propria Home


Creando una nuova applicazione si ottengono


Si deve quindi selezionare Website with Facebook Login indicando la URL della directory dove e' in esecuzione lo script che si intende utilizzare. Attenzione: la URL deve essere in formato FQDN (non sono ammessi nemmeno gli IP numerici)

Per rendere pubbblica l'applicazione deve essere posto su Disabilitato il controllo della SandBox

A questo punto si puo' scaricare il pacchetto con le librerie PHP per interagire con le API di Facebook da questo link 
Attenzione : per eseguire la libreria Php dell'SDK Facebook e' necessario che sul server web sia installata l'estensione php5-curl pena la comparsa di un fantomatico Errore 500

E' quindi giunto il momento di usare lo script riportato alla fine di questo post (modificando con gli opportuni valori i campi evidenziati in giallo)

Da autenticare


Autenticato
---------------------------------------------------------------
<?php

require '../src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => '673135dxxxxxxx',
  'secret' => 'dde6cfb07dbb769xxxxxxxxxxxxxxxx',
));


$user = $facebook->getUser();

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}


if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}


?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>OAuth Facebook</title>
    <style>
      body {
        font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
      }
      h1 a {
        text-decoration: none;
        color: #3b5998;
      }
      h1 a:hover {
        text-decoration: underline;
      }
    </style>
  </head>
  <body>

    <?php if ($user): ?>
      <a href="<?php echo $logoutUrl; ?>">Logout</a>
    <?php else: ?>
      <div>
        Non autenticato :
        <a href="<?php echo $loginUrl; ?>">Registrami con  Facebook</a>
      </div>
    <?php endif ?>

    <?php if ($user): ?> <br><br>Adesso sono autenticato come <br>
      <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">

      
      <pre><?php print_r($user_profile); ?></pre>
    <?php else: ?>
      <strong><em></em></strong>
    <?php endif ?>
  </body>
</html>


Autenticazione OAuth2 con Google

Mediante le API di Google e' possibile effettuare un sistema di autenticazione basato sulle credenziali di Google ovvero si puo' avere un sistema di verifica username/password basato su un account Google

Per fare cio' in Php per prima cosa si deve creare una applicazione andando su questa pagina https://code.google.com/apis/console/?api=plus&pli=1

Si crea una nuova applicazione

 e si ottengono le chiavi per l'utilizzo delle API


a questo punto si puo' scaricare da questo link la libreria Php per interfacciarsi con le API di Google
Attenzione: il redirect Url e' l'indirizzo dello script che gestisce l'autenticazione. Normalmente Google richiede che sia un indirizzo in https ma si puo' cambiare anche in http (non come per le API di Facebook)

Si puo' quindi inserire lo script in Php riportato alla fine di questo post per verificare l'uso delle API modificando i campi evidenziati in giallo con le proprie chiavi

A questo punto richiamando l'indirizzo dello script in un browser si avranno le seguenti schermate

Richiesta di login



Verifica dei permessi richiesti dall'applicazione (in questo caso minimali)




Conferma dell'avvenuta autenticazione




-----------------------------------------------------
<?php

require_once './api/src/Google_Client.php';
require_once './api/src/contrib/Google_Oauth2Service.php';
session_start();

$client = new Google_Client();
$client->setApplicationName("Google UserInfo PHP Starter Application");

$client->setClientId('30253xxxxxx.apps.googleusercontent.com');
$client->setClientSecret('Yq8K0SS-p28tjQxxxxxxxxxx');
$client->setRedirectUri('http://xxxxxx/luca/google/test.php');
$client->setDeveloperKey('AIzaSyDchpWdZDkRtCmdXRANkXjxxxxxxx');
$oauth2 = new Google_Oauth2Service($client);

if (isset($_GET['code'])) {
  $client->authenticate($_GET['code']);
  $_SESSION['token'] = $client->getAccessToken();
  $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
  header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
  return;
}

if (isset($_SESSION['token'])) {
 $client->setAccessToken($_SESSION['token']);
}

if (isset($_REQUEST['logout'])) {
  unset($_SESSION['token']);
  $client->revokeToken();
}

if ($client->getAccessToken()) {
  $user = $oauth2->userinfo->get();

  // These fields are currently filtered through the PHP sanitize filters.
  // See http://www.php.net/manual/en/filter.filters.sanitize.php
  $email = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
  $img = filter_var($user['picture'], FILTER_VALIDATE_URL);
  $personMarkup = "$email<div><img src='$img?sz=50'></div>";

  // The access token may have been updated lazily.
  $_SESSION['token'] = $client->getAccessToken();
} else {
  $authUrl = $client->createAuthUrl();
}
?>
<!doctype html>
<html>
<head><meta charset="utf-8"></head>
<body>
<header><h1>Google UserInfo Sample App</h1></header>
<?php if(isset($personMarkup)): ?>
<?php print $personMarkup ?>
<?php endif ?>
<?php
  if(isset($authUrl)) {
    print "<a class='login' href='$authUrl'>Connect Me!</a>";
  } else {
   print "<a class='logout' href='?logout'>Logout</a>";
  }
?>
</body></html>

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...