1 / 50

2012 ConvergeSE: Exploring Human Identity Through Personalization and Data Mining

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.

jcleblanc
Download Presentation

2012 ConvergeSE: Exploring Human Identity Through Personalization and Data Mining

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. Human Identity: User Types Anonymous Users Registered Users http://www.x.com http://slideshare.net/jcleblanc

  5. 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

  6. Human Identity: Anonymous Users http://www.x.com http://slideshare.net/jcleblanc

  7. Human Identity: Tracking Anonymous Users There are a few common options Tracking Cookie Local Storage http://www.x.com http://slideshare.net/jcleblanc

  8. 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

  9. 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 } } }

  10. 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; }

  11. 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 }

  12. 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

  13. Human Identity: Registered Users http://www.x.com http://slideshare.net/jcleblanc

  14. Human Identity: Identity Sources Sources of Real Identity Social (perceived) Concrete (true) http://www.x.com http://slideshare.net/jcleblanc

  15. Human Identity: Concrete Identity http://www.x.com http://slideshare.net/jcleblanc

  16. PayPal Access: OAuth 2 + Commerce Seamless Checkout Prospect Scores Recommendations http://www.x.com http://slideshare.net/jcleblanc

  17. 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){ ... } ?>

  18. 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"); ?>

  19. 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));

  20. 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); ?>

  21. PayPal Access: Using the Raw Data http://www.x.com http://slideshare.net/jcleblanc

  22. PayPal Access: Using the Raw Data http://www.x.com http://slideshare.net/jcleblanc

  23. 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

  24. Social Grouping: It’s Not A New Thing… http://www.x.com http://slideshare.net/jcleblanc

  25. 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

  26. Social Grouping: The Real Life Social Graph http://www.x.com http://slideshare.net/jcleblanc

  27. Social Grouping: The Online Social Graph http://www.x.com http://slideshare.net/jcleblanc

  28. Social Grouping: Group Types Follower Type Connection Type Group Type http://www.x.com http://slideshare.net/jcleblanc

  29. Social Grouping: Data Miners are Rock Stars http://www.x.com http://slideshare.net/jcleblanc

  30. 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

  31. Social Grouping: Group Programming Primer Step 1: Obtain Website Content http://www.x.com http://slideshare.net/jcleblanc

  32. Social Grouping: Group Programming Primer Step 2: Perform Keyword Density Search http://www.x.com http://slideshare.net/jcleblanc

  33. Social Grouping: Group Programming Primer Step 3: Weight Keywords http://www.x.com http://slideshare.net/jcleblanc

  34. 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

  35. Experimental Identity: WebFinger http://www.x.com http://slideshare.net/jcleblanc

  36. Experimental Identity: WebFinger Step 1: Perform Discovery curl https://gmail.com/.well-known/host-meta http://www.x.com http://slideshare.net/jcleblanc

  37. 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

  38. 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

  39. 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

  40. 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

  41. Experimental Identity: BrowserID http://www.x.com http://slideshare.net/jcleblanc

  42. 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

  43. 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

  44. 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

  45. 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

  46. 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

  47. 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

  48. 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

  49. 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

  50. 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

More Related