500 likes | 513 Views
This workshop dives into the depths of how a person can be identified online, allowing for the delivery of highly personalized experiences. This will cover a few topics, including:Building the identity foundation using authentication systems like BrowserID, PayPal Access and Facebook Connect.Understanding how cultural identity concepts like tribalism play into how people group themselves innately online.Building personality and interest profiles for users by tracking actions using keyword density scraping and categorization.
E N D
Exploring Human Identity Through Personalization and Data Mining Jonathan LeBlanc Developer Evangelist: X.commerce Twitter: @jcleblanc E-Mail: jleblanc@x.com Github: github.com/jcleblanc
What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
Human Identity: User Types Anonymous Users Registered Users http://www.x.com http://slideshare.net/jcleblanc
Human Identity: Open Identity Programming OpenID (…and the upcoming OpenID Connect) PayPal Access, Google, Yahoo! OAuth (1.0a + 2.0) PayPal Access, Facebook, Twitter BrowserID Mozilla http://www.x.com http://slideshare.net/jcleblanc
Human Identity: Anonymous Users http://www.x.com http://slideshare.net/jcleblanc
Human Identity: Tracking Anonymous Users There are a few common options Tracking Cookie Local Storage http://www.x.com http://slideshare.net/jcleblanc
Human Identity: Tracking Anonymous Users Program Overview • On each page visited, track the URL • HTML5 Local Storage as primary storage • Cookies as secondary storage http://www.x.com http://slideshare.net/jcleblanc
Tracking Anonymous Users with Local Storage var storeName = "visited"; if (typeof(localStorage) == 'undefined' ) { //Local Storage Not Available } else { try { var sites = localStorage.getItem(storeName); sites = (sites === null) ? window.location : sites + window.location; localStorage.setItem(storeName, sites + "|"); } catch (e) { if (e == QUOTA_EXCEEDED_ERR) { //quota exceeded } } }
Tracking Anonymous Users with Cookies function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' '){ c = c.substring(1, c.length) }; if (c.indexOf(nameEQ) == 0){ return c.substring(nameEQ.length, c.length); } } return null; }
Tracking Anonymous Users with Cookies var storeName = "visited"; if (typeof(localStorage) == "undefined" ) { var cookieVal = readCookie(storeName); var value = ((cookieVal === null) ? window.location : cookieVal + window.location); var days = 1; var date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); var expires = "; expires=" + date.toGMTString(); document.cookie = storeName + "=" + value + "|" + expires + "; path=/"; } else { //Use Local Storage }
Human Identity: Tracking Anonymous Users Next Steps / Improvements • Remove oldest results when storage fills • Build categorization mapping prior to storage to save space (more on this later) http://www.x.com http://slideshare.net/jcleblanc
Human Identity: Registered Users http://www.x.com http://slideshare.net/jcleblanc
Human Identity: Identity Sources Sources of Real Identity Social (perceived) Concrete (true) http://www.x.com http://slideshare.net/jcleblanc
Human Identity: Concrete Identity http://www.x.com http://slideshare.net/jcleblanc
PayPal Access: OAuth 2 + Commerce Seamless Checkout Prospect Scores Recommendations http://www.x.com http://slideshare.net/jcleblanc
PayPal Access: The Common Code <?php define('KEY', 'YOUR APPLICATION ID'); define('SECRET', 'YOUR APPLICATION SECRET'); define('CALLBACK_URL','YOUR CALLBACK PATH - TO COMPLETE.PHP'); define('AUTH_ENDPOINT', 'https://identity.x.com/xidentity/resources/authorize'); define('TOKEN_ENDPOINT', 'https://identity.x.com/xidentity/oauthtokenservice'); define('USER_ENDPOINT','https://identity.x.com/xidentity/resources/profile/me'); function run_curl($url, $method = 'GET', $postvals = null){ ... } ?>
PayPal Access: Forwarding for Login <?php require_once "common.php"; $auth_url = sprintf( "%s?scope=%s&response_type=code&redirect_uri=%s&client_id=%s", AUTHORIZATION_ENDPOINT, urlencode("https://identity.x.com/xidentity/resources/profile/me"), urlencode(CALLBACK_URL), KEY); //forward user to PayPal auth page header("Location: $auth_url"); ?>
PayPal Access: Obtaining the Access Token <?php require_once "common.php"; //capture code from auth $code = $_GET["code"]; //construct POST object for access token fetch request $postvals = sprintf("client_id=%s&client_secret=%s&grant_type=authorization_code& code=%s&redirect_uri=%s", KEY, SECRET, $code, urlencode(CALLBACK_URL)); //get JSON access token object $token = json_decode(run_curl(ACCESS_TOKEN_ENDPOINT, 'POST', $postvals));
PayPal Access: Using the Access Token //construct URI to fetch profile information for current user $profile_url = sprintf("%s?oauth_token=%s", PROFILE_ENDPOINT, $token- >access_token); //fetch profile of current user $profile = run_curl($profile_url); var_dump($profile); ?>
PayPal Access: Using the Raw Data http://www.x.com http://slideshare.net/jcleblanc
PayPal Access: Using the Raw Data http://www.x.com http://slideshare.net/jcleblanc
What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: It’s Not A New Thing… http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: Foundation in Tribalism Tribalism started as a way to keep us safe …it has lead to some horrible parts of history but it is also a foundation of many of our social relationships http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: The Real Life Social Graph http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: The Online Social Graph http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: Group Types Follower Type Connection Type Group Type http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: Data Miners are Rock Stars http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: Group Programming Primer Program Overview • Use all URLs from the previous program. • Obtain content category for page. • Categorize user interest. http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: Group Programming Primer Step 1: Obtain Website Content http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: Group Programming Primer Step 2: Perform Keyword Density Search http://www.x.com http://slideshare.net/jcleblanc
Social Grouping: Group Programming Primer Step 3: Weight Keywords http://www.x.com http://slideshare.net/jcleblanc
What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: WebFinger http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: WebFinger Step 1: Perform Discovery curl https://gmail.com/.well-known/host-meta http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: WebFinger <XRD xmlns='http://docs.oasis.open.org/ns/xri/xrd-1.0' xmlns:hm='http://host-meta.net/xrd/1.0'> <hm:Host xmlns='http://host-meta.net/xrd/1.0'>gmail.com </hm:Host> <Link rel='lrdd' template='http://www.google.com/s2/webfinger/?q={uri}'> <Title>Resource Descriptor</Title> </Link> </XRD> http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: WebFinger Step 2: Collect User Data curl http://www.google.com/s2/webfinger/?q=nakedt echnologist@gmail.com http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: WebFinger User Profile http://www.google.com/profiles/nakedtechnologist Portable Contacts http://www- opensocial.googleusercontent.com/api/people/118167 121283215553793/ http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: WebFinger profileUrl id thumbnail url urls photos name formatted family name given name display name http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: BrowserID http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: BrowserID BrowserID Source <script src="https://browserid.org/include.js" type="text/javascript"></script> JQuery Source <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script> http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: BrowserID navigator.id.get(function(assertion) { if (assertion) { $.ajax({ url: 'https://browserid.org/verify', type: 'POST', data: 'assertion='+assertion+'&audience=jcleblanc.com', success: function(res) { console.log(res); } }); }); http://www.x.com http://slideshare.net/jcleblanc
Experimental Identity: BrowserID Results { audience: "jcleblanc.com", email: "nakedtechnologist@gmail.com", expires: 1320081400987, issuer: "browserid.org", status: "okay" } http://www.x.com http://slideshare.net/jcleblanc
What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
Social Identity Fail: Personal Safety When Social Discovery Impacts Personal Safety “My privacy concerns are not trite. They are linked to my actual physical safety” --Harriet Jacobs (Gizmodo) http://www.x.com http://slideshare.net/jcleblanc
Social Identity Fail: Privacy Concerns When Making Things Easy Impairs Privacy “Path Uploads Your Entire iPhone Contact List By Default” --Mark Hachman (PCMag) http://www.x.com http://slideshare.net/jcleblanc
Social Identity Fail: The Fine Line The Fine Line Between Insightful and Creepy “How Target Figured Out A Teen Girl Was Pregnant Before Her Father Did” --Kashmir Hill (Forbes) http://www.x.com http://slideshare.net/jcleblanc
Identity Programming Core Concepts Identity is more than just a login Have a social conscience Find the tool that: – Has the raw data that you need – Works with your business http://www.x.com http://slideshare.net/jcleblanc
Thanks! Any Questions? http://slidesha.re/convergese_id Jonathan LeBlanc Developer Evangelist: X.commerce Twitter: @jcleblanc E-Mail: jleblanc@x.com Github: github.com/jcleblanc