Un web ouvert, Paris Web 2009

Preview:

DESCRIPTION

Comment faire un site ouvert sur le web ?De nombreux services fournissent maintenant des API vers leurs données et des flux d’export RSS. Nous allons dépasser ce degré zéro d’ouverture pour tenter de voir ce qui est envisageable.Certaines briques déjà existantes vous permettent d’ors et déjà de faire reposer votre site sur l’existant. Identification OpenId, communication entre applications par OAuth, exploration par YQL, SPARQL ou BOSS, les possibilités ne manquent pas et permettent de développer rapidement le service qui manque sans tout recréer déconnecté du reste du web.Ensuite nous parlerons de vie privée, de contrôle de ses données par l’utilisateur, et de toutes ces problématiques "gênantes" mais qui sont des réflexions indispensable dans le web d’aujourd’hui.Voir http://www.paris-web.fr/2009/-Vendredi-9-octobre-#conf59

Citation preview

http://eric.daspet.name/http://performance.survol.fr/

Éric Daspet

un web ouvert

9 oct. 2009

« Toute création de lien hypertextes avec ce site est strictement interdite sans l'autorisation écrite et préalable »

AFNOR, Alstom, Apple Expo, Autoroutes Paris Rhin Rhône, ATAC, Autrement le web, BHV, Bombardier, Caisse des dépôts et consignations, Centre Français d'exploitation du droit de copie, Chambre de commerce et d'industrie de Reims et d'Epernay (CCIRE), Champion, CNED, Conseil constitutionnel français, CRDP Amiens, Crédit lyonnais, Dimanches au galop, DORMA STA, Esourds, Festival de Cannes, FIFA, France Televisions, France 24, Fédération Française de Football, Foire de Paris, GIAT Industries, Haute Autorité de Lutte contre les Discriminations et pour l'Égalité, Hapag-Lloyd Express, Hollywood Chewing Gum, INSEE, Intelli'n TV, Député Isabelle Vasseur, JO Athènes 2004, J'aime les artistes.fr, Jamais la première (fédération française de cardiologie), Kellogg's, Konami, LCBO (régie des alcools de l'Ontario), M6, Mc Donald's France, Ministère de l'Écologie, de l'Énergie, du Développement durable et de la Mer, Nespresso France, Orange Business, Salon Planète Durable, POM POM, Prévention Tabac (Pfizer), RATP, Reed Expos, Rêves, Coupe du monde de rugby 2007, Salon de l'agriculture 2007, Semaine du goût, Simply Market, Sodexo, Sony France, Société des Transports Intercommunaux de Bruxelles, Starzik, Tabac Info Service, Tassimo France, Téléthon, 3M, 20 minutes, Vichy Consult, Virgin Megastore, Voies navigables de France, Voyages-sncf ... et plein d'autres

RSSATOM

<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom">

<title>Example Feed</title> <link href="http://example.org/"/> <updated>2003-12-13T18:30:02Z</updated> <author> <name>John Doe</name> </author> <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>

<entry> <title>Atom-Powered Robots Run Amok</title> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> </entry>

</feed>

RSSATOM

ICS

RSSATOM

ICS

RDF(a)

µformats

OpenId

<?php$status = "";if (isset($_POST['openid_action']) &&    $_POST['openid_action'] == "login" &&    !empty($_POST['openid_identifier'])) {

    $consumer = new Zend_OpenId_Consumer();    if (!$consumer->login($_POST['openid_identifier'])) {        $status = "OpenID login failed.";    }} else if (isset($_GET['openid_mode'])) {    if ($_GET['openid_mode'] == "id_res") {        $consumer = new Zend_OpenId_Consumer();        if ($consumer->verify($_GET, $id)) {            $status = "VALID " . htmlspecialchars($id);        } else {            $status = "INVALID " . htmlspecialchars($id);        }    } else if ($_GET['openid_mode'] == "cancel") {        $status = "CANCELLED";    }}?>

OpenId OAuth

$req_url = 'https://fireeagle.yahooapis.com/oauth/request_token';$authurl = 'https://fireeagle.yahoo.net/oauth/authorize';$acc_url = 'https://fireeagle.yahooapis.com/oauth/access_token';$api_url = 'https://fireeagle.yahooapis.com/api/0.1';$conskey = 'your_consumer_key';$conssec = 'your_consumer_secret';

session_start();

// In state=1 the next request should include an oauth_token, if it doesn't go back to 0if(!isset($_GET['oauth_token']) && $_SESSION['state']==1) $_SESSION['state'] = 0;

try { $oauth = new OAuth($conskey,$conssec,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI); $oauth->enableDebug(); if(!isset($_GET['oauth_token']) && !$_SESSION['state']) { $request_token_info = $oauth->getRequestToken($req_url); $_SESSION['secret'] = $request_token_info['oauth_token_secret']; $_SESSION['state'] = 1; header('Location: '.$authurl.'?oauth_token='.$request_token_info['oauth_token']); exit; } else if($_SESSION['state']==1) { $oauth->setToken($_GET['oauth_token'],$_SESSION['secret']); $access_token_info = $oauth->getAccessToken($acc_url); $_SESSION['state'] = 2; $_SESSION['token'] = $access_token_info['oauth_token']; $_SESSION['secret'] = $access_token_info['oauth_token_secret']; } $oauth->setToken($_SESSION['token'],$_SESSION['secret']); $oauth->fetch("$api_url/user.json"); $json = json_decode($oauth->getLastResponse()); print_r($json);}catch(OAuthException $E) { print_r($E);}

API

API

REST

XML

API

REST

XML

Exports

RDF + SPARQL                                                         

PREFIX mo: <http://purl.org/ontology/mo/>SELECT ?albumWHERE { ?album a mo:Record; mo:releaseType mo:album; dc:creator <http://zitgist.com/music/artist/65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab>.} ORDER BY ?album

RDF + SPARQL                   OpenSocial                             YQL , BOSS                                      

$two_legged_app = new YahooApplication(API_KEY,SHARED_SECRET); $flickr_query = "select * from flickr.photos.search where text=\"panda\" limit 3";$news_feed = "select * from rss where url='http://rss…../topstories' and title LIKE \"%China%\"";

$flickrResponse = $two_legged_app->query($flickr_query);var_dump($flickrResponse);

$newsResponse = $two_legged_app->query($news_feed);var_dump($newsResponse);

<?phpinclude("xmpp.php");$conn = new XMPP('talk.google.com', 5222, 'username', 'password', 'xmpphp', 'gmail.com’);$conn->connect();$conn->processUntil('session_start');$conn->message('someguy@someserver.net', 'This is a test message!');$conn->disconnect();?>

http://eric.daspet.name/http://performance.survol.fr/

Éric Daspet

un web ouvert

9 oct. 2009

Licences et créditsImages sous licence Creative Commons BY-NC 2.0 :- Schiermonnikoog 2, par Oude School, http://www.flickr.com/photos/oudeschool/3504368910/ - (not mine, but had to share), par number657, http://www.flickr.com/photos/number657/3006902331/

Images sous licence Creative Commons BY 2.0 :- image-7136, par le Cushing Memorial Library and Archives, Texas A&M, http://www.flickr.com/photos/cushinglibrary/3542093711/

Images sous licence Creative Commons BY-NC-SA 2.0 :- Pelouse Autorisée, par SaEzOd, http://www.flickr.com/photos/sazeod/505708919/- Old style way, par Bruno 1802, http://www.flickr.com/photos/bruno_1802/3434231232/- Patchwork Extravaganza, par hassi, http://www.flickr.com/photos/14603378@N00/140847298/- Relique d'un autre temps, par Denis Vailhe, http://www.flickr.com/photos/dvailhe/3700361343/ - We are all connected., par Erica Marshall, http://www.flickr.com/photos/erica_marshall/2885783824/- Creative Commons Swag Contest 2007 by Pablokdc, par Pablokdc, http://www.flickr.com/photos/pablokdc/2053079693/- Mes bagages de départ @ Ma chambre, Bondi-Junction, Sydney, Australia, par raguy, http://www.flickr.com/photos/raguy/3674500467/

Images sous licence Creative Commons BY-NC-ND 2.0 :- His first steps!, par Photochiel, http://www.flickr.com/photos/photochiel/317904412/- 037: Authentication, par william couch, http://www.flickr.com/photos/wcouch/2249423453/ - Sharing, par furiousgeorge81, http://www.flickr.com/photos/furiousgeorge81/177926979/- Propriété privée, par Quelqu'une, http://www.flickr.com/photos/quelqu_une/3638322346/

Cette présentation est donc légitimement sous licence Creative Commons BY-NC-ND 2.0Les licences Creative Commons sont consultables à l’adresse : http://creativecommons.org/licenses/

Merci à : SQLI, l’équipe Paris-web, David Larlet

Recommended