470 likes | 478 Views
March 2012 presentation on open source Ecommerce identity for POSSCON (Columbia, SC). The audio recording from this session is available at http://archive.org/details/ChangingTheFaceOfOpenIdentityInEcommercePosscon2012
E N D
Changing the Face of Open Identity In Ecommerce Jonathan LeBlanc Developer Evangelist Twitter: @jcleblanc E-Mail: jleblanc@x.com Github: github.com/jcleblanc
The Gist of This Talk http://www.x.com http://slidesha.re/posscon_identity
The Gist of This Talk: PayPal Access http://www.x.com http://slidesha.re/posscon_identity
The Gist of This Talk: PayPal Access http://www.x.com http://slidesha.re/posscon_identity
The Gist of This Talk: PayPal Access http://www.x.com http://slidesha.re/posscon_identity
What We’re Going to Cover What is user identity? How can you use grouping to personalize? How do you pick the right identity tool? How does PayPal Access help? http://www.x.com http://slidesha.re/posscon_identity
What We’re Going to Cover What is user identity? How can you use grouping to personalize? How do you pick the right identity tool? How does PayPal Access help? http://www.x.com http://slidesha.re/posscon_identity
Identity: It’s Not Facebook http://www.x.com http://slidesha.re/posscon_identity
Identity: It’s Not BrowserID http://www.x.com http://slidesha.re/posscon_identity
Identity: It’s Not Even PayPal http://www.x.com http://slidesha.re/posscon_identity
Identity: Login is Just the Tool http://www.x.com http://slidesha.re/posscon_identity
Identity: It’s Human Behavior http://www.x.com http://slidesha.re/posscon_identity
Identity: Statistics From User Browsing Data Are you tracking what a user is viewing? Are you categorizing your users? Are you incentivizing your users? http://www.x.com http://slidesha.re/posscon_identity
Identity: The Different Identity Models Anonymous Identity http://www.x.com http://slidesha.re/posscon_identity
Identity: The Different Identity Models Perceived Identity http://www.x.com http://slidesha.re/posscon_identity
Identity: The Different Identity Models True (Verified) Identity http://www.x.com http://slidesha.re/posscon_identity
What Have We Learned Thus Far? Identity is more than just a login http://www.x.com http://slidesha.re/posscon_identity
What We’re Going to Cover What is user identity? How can you use grouping to personalize? How do you pick the right identity tool? How does PayPal Access help? http://www.x.com http://slidesha.re/posscon_identity
Grouping: Users Get Confused http://www.x.com http://slidesha.re/posscon_identity
Grouping: Find People With Like Interests http://www.x.com http://slidesha.re/posscon_identity
Grouping: Recommended Products http://www.x.com http://slidesha.re/posscon_identity
What Have We Learned Thus Far? Identity is more than just a login Grouping provides insight into users http://www.x.com http://slidesha.re/posscon_identity
What We’re Going to Cover What is user identity? How can you use grouping to personalize? How do you pick the right identity tool? How does PayPal Access help? http://www.x.com http://slidesha.re/posscon_identity
Identity Tools: Proprietary or Open? 23 % of customers abandoned carts when asked to register. (Forrester) 45 % left a site when they couldn’t remember their password. (Blue Inc) http://www.x.com http://slidesha.re/posscon_identity
Identity Tools: It’s Simpler Than You Think Do you sell anything? What kind of raw user data do you need? In what ways do you want to personalize your product with identity? http://www.x.com http://slidesha.re/posscon_identity
Identity Tools: Selling Goods http://www.x.com http://slidesha.re/posscon_identity
Identity Tools: Selling Goods Graph source provided by Digitas (http://rww.readwriteweb.netdna-cdn.com/teaser.jpg) http://www.x.com http://slidesha.re/posscon_identity
Identity Tools: Raw User Data { "addresses":[{ "state":"CA”, "street1":"1339 moonlight way”, "city":"New York", "zip":"92345” }], "emails”:["john_smith22@yahoo.com"], "firstName":"John", "lastName":"Smith", "telephoneNumber":"2123935554” } http://www.x.com http://slidesha.re/posscon_identity
Identity Tools: Personalization http://www.x.com http://slidesha.re/posscon_identity
What Have We Learned Thus Far? Identity is more than just a login Grouping provides insight into users The right tool should work for your needs http://www.x.com http://slidesha.re/posscon_identity
What We’re Going to Cover What is user identity? How can you use grouping to personalize? How do you pick the right identity tool? How does PayPal Access help? http://www.x.com http://slidesha.re/posscon_identity
PayPal Access: The Core Principals Identity is more than just a login Grouping provides insight into users The right tool should work for your needs http://www.x.com http://slidesha.re/posscon_identity
PayPal Access: Implementation Example • Create an application at devportal.x.com. • Forward the user to PayPal to authenticate. • Exchange the response code for an access token. • Use the access token to collect user data. http://www.x.com http://slidesha.re/posscon_identity
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: The Raw Data Verified Account Language First Name Last Name Full Name Emails Addresses Telephone Number Date of Birth Time zone Gender http://www.x.com http://slidesha.re/posscon_identity
PayPal Access: Using the Raw Data http://www.x.com http://slidesha.re/posscon_identity
PayPal Access: Using the Raw Data http://www.x.com http://slidesha.re/posscon_identity
PayPal Access: The Data Sources Activity Class Transaction Recency Transaction Frequency Average Spent http://www.x.com http://slidesha.re/posscon_identity
Seamless Checkout Simplification User is already known – no login needed. Simplified checkout with a single review step. http://www.x.com http://slidesha.re/posscon_identity
Extending Identity with Recommendations Recommended Products Similar Products http://www.x.com http://slidesha.re/posscon_identity
Group Dynamics with Prospect Scores http://www.x.com http://slidesha.re/posscon_identity
In The End… Data should help, not hinder Identity should help extend your business http://www.x.com http://slidesha.re/posscon_identity
Looking for Partners Early Access to alpha release products Direct support from evangelism & engineering http://www.x.com http://slidesha.re/posscon_identity
Thanks For Joining Me! http://slidesha.re/posscon_identity Jonathan LeBlanc Developer Evangelist Twitter: @jcleblanc E-Mail: jleblanc@x.com Github: github.com/jcleblanc