SlideShare a Scribd company logo
The Foundations of a Social   Application Platform Jonathan LeBlanc Technology Evangelist Yahoo! Developer Network Twitter: @jcleblanc
EXAMPLES | TUTORIALS | CODE SAMPLES developer.yahoo.com
Review Topics – What Will We Explore ,[object Object]
Open Authentication (OAuth)
Software Development Kits (SDKs)
OpenSocial and Using Social Data
Application Security
Querying Languages,[object Object]
OAuth - Open Authentication
OAuth – What Does the End-User See?
OAuth – What Does the End-User See?
SDKs (Software Development Kits) PHP, Python, Java, ActionScript 3, Objective-C, and OpenSocial REST APIs http://www.github.com/yahoo
SDKs (Software Development Kits) – Abstraction Using PHP //create session variables $ysession = YahooSession::requireSession(API_KEY, API_SECRET, APP_ID); $yuser = $ysession->getSessionedUser(); //get user profile $yprofile = $yuser->loadProfile();  //get user connections $connections = $yuser->getConnections($start,$count, $total);
What is OpenSocial? For developing applications on social networks Accessing social data (profiles, connections)  Fetching and inserting activities Implemented by many containers YAP, MySpace, Orkut, etc. Develop once, distribute                                  broadly
Collecting User Data With OpenSocial 0.8 /* OpenSocialPERSON data request */ varreq = opensocial.newDataRequest();  varparams = {}; params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [ opensocial.Person.Field.NAME, opensocial.Person.Field.THUMBNAIL_URL ]; req.add(req.newFetchPersonRequest('VIEWER', params), 'viewer_profile'); req.send(response);
Collecting User Data With OpenSocial 0.8 /* response handler */ function response(data){    var viewer = data.get('viewer_profile').getData();    var aboutme =       viewer.getField(opensocial.Person.Field.NAME); }
Fetching Updates with OpenSocial 0.8
Getting Updates With OpenSocial 0.8 var req = opensocial.newDataRequest(); var spec = new opensocial.IdSpec(); spec.setField(opensocial.IdSpec.Field.USER_ID, opensocial.IdSpec.PersonId.OWNER); req.add(req.newFetchActivitiesRequest(spec), 'ownerActivities'); req.send(handleActivities);
Getting Updates With OpenSocial 0.8 function handleActivities(dataResponse) { varownerActivities = dataResponse.get('ownerActivities').getData();     //parse owner activities }
Inserting Updates with OpenSocial 0.8 var params = {}, activity; params[opensocial.Activity.Field.TITLE] = title; params[opensocial.Activity.Field.BODY] = body; activity = opensocial.newActivity(params); opensocial.requestCreateActivity( 	activity, 	opensocial.CreateActivityPriority.LOW, 	callback);
Fetching Connections With OpenSocial 0.8
Fetching Connections With OpenSocial 0.8 /* get owner and owner friends */ varidspec = opensocial.newIdSpec({ 'userId' : 'OWNER', 'groupId' : 'FRIENDS' }); varreq = opensocial.newDataRequest(); req.add(req.newFetchPeopleRequest(idspec), 'get_friends'); req.send(responseFriends);
Fetching Connections With OpenSocial 0.8 /* connection response function */ function responseFriends(data){ varobjFriends = data.get('get_friends').getData(); var html = ''; objFriends.each(function(person) {         html += person.getDisplayName() + '<br />';     });      }
Front-end Security
Front-end Security: IFrames IFrames - Pros ,[object Object]
Full content control for developersIFrames - Cons ,[object Object]
No content restrictions,[object Object]
Aims to protect end-users

More Related Content

What's hot

Summit2014 topic 0066 - 10 enhancements that require 10 lines of code
Summit2014 topic 0066 - 10 enhancements that require 10 lines of codeSummit2014 topic 0066 - 10 enhancements that require 10 lines of code
Summit2014 topic 0066 - 10 enhancements that require 10 lines of code
Angel Borroy López
 
Sql injection
Sql injection Sql injection
Sql injection
Aaron Hill
 
One Size Fits All
One Size Fits AllOne Size Fits All
One Size Fits All
Claudio Meinberg
 
Document
DocumentDocument
Documentviwviw
 
OWASP Top 10 - DrupalCon Amsterdam 2019
OWASP Top 10 - DrupalCon Amsterdam 2019OWASP Top 10 - DrupalCon Amsterdam 2019
OWASP Top 10 - DrupalCon Amsterdam 2019
Ayesh Karunaratne
 
The Django Web Framework (EuroPython 2006)
The Django Web Framework (EuroPython 2006)The Django Web Framework (EuroPython 2006)
The Django Web Framework (EuroPython 2006)
Simon Willison
 
How did i steal your database
How did i steal your databaseHow did i steal your database
How did i steal your database
Mostafa Siraj
 

What's hot (7)

Summit2014 topic 0066 - 10 enhancements that require 10 lines of code
Summit2014 topic 0066 - 10 enhancements that require 10 lines of codeSummit2014 topic 0066 - 10 enhancements that require 10 lines of code
Summit2014 topic 0066 - 10 enhancements that require 10 lines of code
 
Sql injection
Sql injection Sql injection
Sql injection
 
One Size Fits All
One Size Fits AllOne Size Fits All
One Size Fits All
 
Document
DocumentDocument
Document
 
OWASP Top 10 - DrupalCon Amsterdam 2019
OWASP Top 10 - DrupalCon Amsterdam 2019OWASP Top 10 - DrupalCon Amsterdam 2019
OWASP Top 10 - DrupalCon Amsterdam 2019
 
The Django Web Framework (EuroPython 2006)
The Django Web Framework (EuroPython 2006)The Django Web Framework (EuroPython 2006)
The Django Web Framework (EuroPython 2006)
 
How did i steal your database
How did i steal your databaseHow did i steal your database
How did i steal your database
 

Viewers also liked

Programming Social Applications
Programming Social ApplicationsProgramming Social Applications
Programming Social Applications
Jonathan LeBlanc
 
Applied pots
Applied potsApplied pots
Applied pots
SallyHart72
 
Training Principles2 Application Examples
Training Principles2 Application ExamplesTraining Principles2 Application Examples
Training Principles2 Application Examplesselbie
 
Sport application
Sport applicationSport application
Sport application
Văn Hiển
 
Business of sport
Business of sportBusiness of sport
Business of sport
Jeremy Floyd Pedregosa
 
The 2015 App Marketing Guide by Localytics
The 2015 App Marketing Guide by LocalyticsThe 2015 App Marketing Guide by Localytics
The 2015 App Marketing Guide by Localytics
Jordann Le Gal
 
Application Lifecycle Management - It's a team sport
Application Lifecycle Management - It's a team sportApplication Lifecycle Management - It's a team sport
Application Lifecycle Management - It's a team sport
Sandeep Joshi
 
Social Media Training for the Sacramento BIA
Social Media Training for the Sacramento BIASocial Media Training for the Sacramento BIA
Social Media Training for the Sacramento BIA
Lesley Miller
 
Las Mejores Marcas de Retail 2014 por Interbrand
Las Mejores Marcas de Retail 2014 por InterbrandLas Mejores Marcas de Retail 2014 por Interbrand
Las Mejores Marcas de Retail 2014 por Interbrand
Organización Roa Florhuila S.A.
 
The Upheaval of Open Commerce
The Upheaval of Open CommerceThe Upheaval of Open Commerce
The Upheaval of Open Commerce
Jonathan LeBlanc
 
X University Georgia Tech: Overview
X University Georgia Tech: OverviewX University Georgia Tech: Overview
X University Georgia Tech: Overview
Jonathan LeBlanc
 
History of YDN
History of YDNHistory of YDN
History of YDN
Jonathan LeBlanc
 
Using Social Media to Tell Your Story
Using Social Media to Tell Your StoryUsing Social Media to Tell Your Story
Using Social Media to Tell Your Story
Lesley Miller
 
Building on Social Application Platforms
Building on Social Application PlatformsBuilding on Social Application Platforms
Building on Social Application Platforms
Jonathan LeBlanc
 
X University Georgia Tech: ql.io and Identity
X University Georgia Tech: ql.io and IdentityX University Georgia Tech: ql.io and Identity
X University Georgia Tech: ql.io and Identity
Jonathan LeBlanc
 
2012 SVCodeCamp: In App Payments with HTML5
2012 SVCodeCamp: In App Payments with HTML52012 SVCodeCamp: In App Payments with HTML5
2012 SVCodeCamp: In App Payments with HTML5
Jonathan LeBlanc
 
Facebook for the Floundering
Facebook for the FlounderingFacebook for the Floundering
Facebook for the FlounderingLesley Miller
 
Extra-Osseous TaloTarsal Stabilization - Benefit to Risk Analysis
Extra-Osseous TaloTarsal Stabilization - Benefit to Risk AnalysisExtra-Osseous TaloTarsal Stabilization - Benefit to Risk Analysis
Extra-Osseous TaloTarsal Stabilization - Benefit to Risk Analysis
GraMedica
 
Emotional Design for Mobile
Emotional Design for MobileEmotional Design for Mobile
Emotional Design for Mobile
Jonathan LeBlanc
 
Las Mejores Marcas del 2014 por Interbrand
Las Mejores Marcas del 2014 por InterbrandLas Mejores Marcas del 2014 por Interbrand
Las Mejores Marcas del 2014 por Interbrand
Organización Roa Florhuila S.A.
 

Viewers also liked (20)

Programming Social Applications
Programming Social ApplicationsProgramming Social Applications
Programming Social Applications
 
Applied pots
Applied potsApplied pots
Applied pots
 
Training Principles2 Application Examples
Training Principles2 Application ExamplesTraining Principles2 Application Examples
Training Principles2 Application Examples
 
Sport application
Sport applicationSport application
Sport application
 
Business of sport
Business of sportBusiness of sport
Business of sport
 
The 2015 App Marketing Guide by Localytics
The 2015 App Marketing Guide by LocalyticsThe 2015 App Marketing Guide by Localytics
The 2015 App Marketing Guide by Localytics
 
Application Lifecycle Management - It's a team sport
Application Lifecycle Management - It's a team sportApplication Lifecycle Management - It's a team sport
Application Lifecycle Management - It's a team sport
 
Social Media Training for the Sacramento BIA
Social Media Training for the Sacramento BIASocial Media Training for the Sacramento BIA
Social Media Training for the Sacramento BIA
 
Las Mejores Marcas de Retail 2014 por Interbrand
Las Mejores Marcas de Retail 2014 por InterbrandLas Mejores Marcas de Retail 2014 por Interbrand
Las Mejores Marcas de Retail 2014 por Interbrand
 
The Upheaval of Open Commerce
The Upheaval of Open CommerceThe Upheaval of Open Commerce
The Upheaval of Open Commerce
 
X University Georgia Tech: Overview
X University Georgia Tech: OverviewX University Georgia Tech: Overview
X University Georgia Tech: Overview
 
History of YDN
History of YDNHistory of YDN
History of YDN
 
Using Social Media to Tell Your Story
Using Social Media to Tell Your StoryUsing Social Media to Tell Your Story
Using Social Media to Tell Your Story
 
Building on Social Application Platforms
Building on Social Application PlatformsBuilding on Social Application Platforms
Building on Social Application Platforms
 
X University Georgia Tech: ql.io and Identity
X University Georgia Tech: ql.io and IdentityX University Georgia Tech: ql.io and Identity
X University Georgia Tech: ql.io and Identity
 
2012 SVCodeCamp: In App Payments with HTML5
2012 SVCodeCamp: In App Payments with HTML52012 SVCodeCamp: In App Payments with HTML5
2012 SVCodeCamp: In App Payments with HTML5
 
Facebook for the Floundering
Facebook for the FlounderingFacebook for the Floundering
Facebook for the Floundering
 
Extra-Osseous TaloTarsal Stabilization - Benefit to Risk Analysis
Extra-Osseous TaloTarsal Stabilization - Benefit to Risk AnalysisExtra-Osseous TaloTarsal Stabilization - Benefit to Risk Analysis
Extra-Osseous TaloTarsal Stabilization - Benefit to Risk Analysis
 
Emotional Design for Mobile
Emotional Design for MobileEmotional Design for Mobile
Emotional Design for Mobile
 
Las Mejores Marcas del 2014 por Interbrand
Las Mejores Marcas del 2014 por InterbrandLas Mejores Marcas del 2014 por Interbrand
Las Mejores Marcas del 2014 por Interbrand
 

Similar to Foundations of a Social Application Platform

YAP / Open Mail Overview
YAP / Open Mail OverviewYAP / Open Mail Overview
YAP / Open Mail Overview
Jonathan LeBlanc
 
Jaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebJaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social Web
Patrick Chanezon
 
Hi5 Open Social
Hi5   Open SocialHi5   Open Social
Hi5 Open Social
Julia Foxworthy
 
Facebook für PHP Entwickler - phpugffm
Facebook für PHP Entwickler - phpugffmFacebook für PHP Entwickler - phpugffm
Facebook für PHP Entwickler - phpugffmStephan Hochdörfer
 
Intro to Parse
Intro to ParseIntro to Parse
Intro to Parse
Tushar Acharya
 
The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009
Chris Chabot
 
Open Social Introduction - JUG SummerCamp 2010
Open Social Introduction - JUG SummerCamp 2010Open Social Introduction - JUG SummerCamp 2010
Open Social Introduction - JUG SummerCamp 2010
Tugdual Grall
 
Nk API - examples
Nk API - examplesNk API - examples
Nk API - examplesnasza-klasa
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocial
Patrick Chanezon
 
Opensocial Codelab
Opensocial CodelabOpensocial Codelab
Opensocial Codelab
Pieter De Schepper
 
Hi5 Opensocial Code Lab Presentation
Hi5 Opensocial Code Lab PresentationHi5 Opensocial Code Lab Presentation
Hi5 Opensocial Code Lab Presentationplindner
 
Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019
Matt Raible
 
China Science Challenge
China Science ChallengeChina Science Challenge
China Science Challengeremko caprio
 
SgCodeJam24 Workshop
SgCodeJam24 WorkshopSgCodeJam24 Workshop
SgCodeJam24 Workshop
remko caprio
 
Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102
remko caprio
 
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolZend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
Gordon Forsythe
 
Guia de Sobrevivência JS no mundo Open Source
Guia de Sobrevivência JS no mundo Open SourceGuia de Sobrevivência JS no mundo Open Source
Guia de Sobrevivência JS no mundo Open Source
Leonardo Balter
 
Goodle Developer Days Munich 2008 - Open Social Update
Goodle Developer Days Munich 2008 - Open Social UpdateGoodle Developer Days Munich 2008 - Open Social Update
Goodle Developer Days Munich 2008 - Open Social Update
Patrick Chanezon
 
Create a res tful services api in php.
Create a res tful services api in php.Create a res tful services api in php.
Create a res tful services api in php.
Adeoye Akintola
 

Similar to Foundations of a Social Application Platform (20)

YAP / Open Mail Overview
YAP / Open Mail OverviewYAP / Open Mail Overview
YAP / Open Mail Overview
 
Jaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebJaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social Web
 
Hi5 Open Social
Hi5   Open SocialHi5   Open Social
Hi5 Open Social
 
Facebook für PHP Entwickler - phpugffm
Facebook für PHP Entwickler - phpugffmFacebook für PHP Entwickler - phpugffm
Facebook für PHP Entwickler - phpugffm
 
Intro to Parse
Intro to ParseIntro to Parse
Intro to Parse
 
The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009
 
Open Social Introduction - JUG SummerCamp 2010
Open Social Introduction - JUG SummerCamp 2010Open Social Introduction - JUG SummerCamp 2010
Open Social Introduction - JUG SummerCamp 2010
 
Open social
Open socialOpen social
Open social
 
Nk API - examples
Nk API - examplesNk API - examples
Nk API - examples
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocial
 
Opensocial Codelab
Opensocial CodelabOpensocial Codelab
Opensocial Codelab
 
Hi5 Opensocial Code Lab Presentation
Hi5 Opensocial Code Lab PresentationHi5 Opensocial Code Lab Presentation
Hi5 Opensocial Code Lab Presentation
 
Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019
 
China Science Challenge
China Science ChallengeChina Science Challenge
China Science Challenge
 
SgCodeJam24 Workshop
SgCodeJam24 WorkshopSgCodeJam24 Workshop
SgCodeJam24 Workshop
 
Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102
 
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolZend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
 
Guia de Sobrevivência JS no mundo Open Source
Guia de Sobrevivência JS no mundo Open SourceGuia de Sobrevivência JS no mundo Open Source
Guia de Sobrevivência JS no mundo Open Source
 
Goodle Developer Days Munich 2008 - Open Social Update
Goodle Developer Days Munich 2008 - Open Social UpdateGoodle Developer Days Munich 2008 - Open Social Update
Goodle Developer Days Munich 2008 - Open Social Update
 
Create a res tful services api in php.
Create a res tful services api in php.Create a res tful services api in php.
Create a res tful services api in php.
 

More from Jonathan LeBlanc

JavaScript App Security: Auth and Identity on the Client
JavaScript App Security: Auth and Identity on the ClientJavaScript App Security: Auth and Identity on the Client
JavaScript App Security: Auth and Identity on the Client
Jonathan LeBlanc
 
Improving Developer Onboarding Through Intelligent Data Insights
Improving Developer Onboarding Through Intelligent Data InsightsImproving Developer Onboarding Through Intelligent Data Insights
Improving Developer Onboarding Through Intelligent Data Insights
Jonathan LeBlanc
 
Better Data with Machine Learning and Serverless
Better Data with Machine Learning and ServerlessBetter Data with Machine Learning and Serverless
Better Data with Machine Learning and Serverless
Jonathan LeBlanc
 
Best Practices for Application Development with Box
Best Practices for Application Development with BoxBest Practices for Application Development with Box
Best Practices for Application Development with Box
Jonathan LeBlanc
 
Box Platform Overview
Box Platform OverviewBox Platform Overview
Box Platform Overview
Jonathan LeBlanc
 
Box Platform Developer Workshop
Box Platform Developer WorkshopBox Platform Developer Workshop
Box Platform Developer Workshop
Jonathan LeBlanc
 
Modern Cloud Data Security Practices
Modern Cloud Data Security PracticesModern Cloud Data Security Practices
Modern Cloud Data Security Practices
Jonathan LeBlanc
 
Box Authentication Types
Box Authentication TypesBox Authentication Types
Box Authentication Types
Jonathan LeBlanc
 
Understanding Box UI Elements
Understanding Box UI ElementsUnderstanding Box UI Elements
Understanding Box UI Elements
Jonathan LeBlanc
 
Understanding Box applications, tokens, and scoping
Understanding Box applications, tokens, and scopingUnderstanding Box applications, tokens, and scoping
Understanding Box applications, tokens, and scoping
Jonathan LeBlanc
 
The Future of Online Money: Creating Secure Payments Globally
The Future of Online Money: Creating Secure Payments GloballyThe Future of Online Money: Creating Secure Payments Globally
The Future of Online Money: Creating Secure Payments Globally
Jonathan LeBlanc
 
Modern API Security with JSON Web Tokens
Modern API Security with JSON Web TokensModern API Security with JSON Web Tokens
Modern API Security with JSON Web Tokens
Jonathan LeBlanc
 
Creating an In-Aisle Purchasing System from Scratch
Creating an In-Aisle Purchasing System from ScratchCreating an In-Aisle Purchasing System from Scratch
Creating an In-Aisle Purchasing System from Scratch
Jonathan LeBlanc
 
Secure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaSecure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication Media
Jonathan LeBlanc
 
Protecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsProtecting the Future of Mobile Payments
Protecting the Future of Mobile Payments
Jonathan LeBlanc
 
Node.js Authentication and Data Security
Node.js Authentication and Data SecurityNode.js Authentication and Data Security
Node.js Authentication and Data Security
Jonathan LeBlanc
 
PHP Identity and Data Security
PHP Identity and Data SecurityPHP Identity and Data Security
PHP Identity and Data Security
Jonathan LeBlanc
 
Secure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaSecure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication Media
Jonathan LeBlanc
 
Protecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsProtecting the Future of Mobile Payments
Protecting the Future of Mobile Payments
Jonathan LeBlanc
 
Future of Identity, Data, and Wearable Security
Future of Identity, Data, and Wearable SecurityFuture of Identity, Data, and Wearable Security
Future of Identity, Data, and Wearable Security
Jonathan LeBlanc
 

More from Jonathan LeBlanc (20)

JavaScript App Security: Auth and Identity on the Client
JavaScript App Security: Auth and Identity on the ClientJavaScript App Security: Auth and Identity on the Client
JavaScript App Security: Auth and Identity on the Client
 
Improving Developer Onboarding Through Intelligent Data Insights
Improving Developer Onboarding Through Intelligent Data InsightsImproving Developer Onboarding Through Intelligent Data Insights
Improving Developer Onboarding Through Intelligent Data Insights
 
Better Data with Machine Learning and Serverless
Better Data with Machine Learning and ServerlessBetter Data with Machine Learning and Serverless
Better Data with Machine Learning and Serverless
 
Best Practices for Application Development with Box
Best Practices for Application Development with BoxBest Practices for Application Development with Box
Best Practices for Application Development with Box
 
Box Platform Overview
Box Platform OverviewBox Platform Overview
Box Platform Overview
 
Box Platform Developer Workshop
Box Platform Developer WorkshopBox Platform Developer Workshop
Box Platform Developer Workshop
 
Modern Cloud Data Security Practices
Modern Cloud Data Security PracticesModern Cloud Data Security Practices
Modern Cloud Data Security Practices
 
Box Authentication Types
Box Authentication TypesBox Authentication Types
Box Authentication Types
 
Understanding Box UI Elements
Understanding Box UI ElementsUnderstanding Box UI Elements
Understanding Box UI Elements
 
Understanding Box applications, tokens, and scoping
Understanding Box applications, tokens, and scopingUnderstanding Box applications, tokens, and scoping
Understanding Box applications, tokens, and scoping
 
The Future of Online Money: Creating Secure Payments Globally
The Future of Online Money: Creating Secure Payments GloballyThe Future of Online Money: Creating Secure Payments Globally
The Future of Online Money: Creating Secure Payments Globally
 
Modern API Security with JSON Web Tokens
Modern API Security with JSON Web TokensModern API Security with JSON Web Tokens
Modern API Security with JSON Web Tokens
 
Creating an In-Aisle Purchasing System from Scratch
Creating an In-Aisle Purchasing System from ScratchCreating an In-Aisle Purchasing System from Scratch
Creating an In-Aisle Purchasing System from Scratch
 
Secure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaSecure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication Media
 
Protecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsProtecting the Future of Mobile Payments
Protecting the Future of Mobile Payments
 
Node.js Authentication and Data Security
Node.js Authentication and Data SecurityNode.js Authentication and Data Security
Node.js Authentication and Data Security
 
PHP Identity and Data Security
PHP Identity and Data SecurityPHP Identity and Data Security
PHP Identity and Data Security
 
Secure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaSecure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication Media
 
Protecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsProtecting the Future of Mobile Payments
Protecting the Future of Mobile Payments
 
Future of Identity, Data, and Wearable Security
Future of Identity, Data, and Wearable SecurityFuture of Identity, Data, and Wearable Security
Future of Identity, Data, and Wearable Security
 

Recently uploaded

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 

Recently uploaded (20)

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 

Foundations of a Social Application Platform

  • 1. The Foundations of a Social Application Platform Jonathan LeBlanc Technology Evangelist Yahoo! Developer Network Twitter: @jcleblanc
  • 2. EXAMPLES | TUTORIALS | CODE SAMPLES developer.yahoo.com
  • 3.
  • 6. OpenSocial and Using Social Data
  • 8.
  • 9. OAuth - Open Authentication
  • 10.
  • 11. OAuth – What Does the End-User See?
  • 12. OAuth – What Does the End-User See?
  • 13. SDKs (Software Development Kits) PHP, Python, Java, ActionScript 3, Objective-C, and OpenSocial REST APIs http://www.github.com/yahoo
  • 14. SDKs (Software Development Kits) – Abstraction Using PHP //create session variables $ysession = YahooSession::requireSession(API_KEY, API_SECRET, APP_ID); $yuser = $ysession->getSessionedUser(); //get user profile $yprofile = $yuser->loadProfile(); //get user connections $connections = $yuser->getConnections($start,$count, $total);
  • 15. What is OpenSocial? For developing applications on social networks Accessing social data (profiles, connections) Fetching and inserting activities Implemented by many containers YAP, MySpace, Orkut, etc. Develop once, distribute broadly
  • 16.
  • 17. Collecting User Data With OpenSocial 0.8 /* OpenSocialPERSON data request */ varreq = opensocial.newDataRequest(); varparams = {}; params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [ opensocial.Person.Field.NAME, opensocial.Person.Field.THUMBNAIL_URL ]; req.add(req.newFetchPersonRequest('VIEWER', params), 'viewer_profile'); req.send(response);
  • 18. Collecting User Data With OpenSocial 0.8 /* response handler */ function response(data){ var viewer = data.get('viewer_profile').getData(); var aboutme = viewer.getField(opensocial.Person.Field.NAME); }
  • 19. Fetching Updates with OpenSocial 0.8
  • 20. Getting Updates With OpenSocial 0.8 var req = opensocial.newDataRequest(); var spec = new opensocial.IdSpec(); spec.setField(opensocial.IdSpec.Field.USER_ID, opensocial.IdSpec.PersonId.OWNER); req.add(req.newFetchActivitiesRequest(spec), 'ownerActivities'); req.send(handleActivities);
  • 21. Getting Updates With OpenSocial 0.8 function handleActivities(dataResponse) { varownerActivities = dataResponse.get('ownerActivities').getData(); //parse owner activities }
  • 22. Inserting Updates with OpenSocial 0.8 var params = {}, activity; params[opensocial.Activity.Field.TITLE] = title; params[opensocial.Activity.Field.BODY] = body; activity = opensocial.newActivity(params); opensocial.requestCreateActivity( activity, opensocial.CreateActivityPriority.LOW, callback);
  • 23. Fetching Connections With OpenSocial 0.8
  • 24. Fetching Connections With OpenSocial 0.8 /* get owner and owner friends */ varidspec = opensocial.newIdSpec({ 'userId' : 'OWNER', 'groupId' : 'FRIENDS' }); varreq = opensocial.newDataRequest(); req.add(req.newFetchPeopleRequest(idspec), 'get_friends'); req.send(responseFriends);
  • 25. Fetching Connections With OpenSocial 0.8 /* connection response function */ function responseFriends(data){ varobjFriends = data.get('get_friends').getData(); var html = ''; objFriends.each(function(person) { html += person.getDisplayName() + '<br />'; });      }
  • 27.
  • 28.
  • 29.
  • 30. Aims to protect end-users
  • 31.
  • 33.
  • 34. Front-end Security: Caja Cajoling Process var $dis = $v.getOuters(); $v.initOuter('onerror'); $v.so('response', ___.markFuncFreeze(function () { function response$_caller($dis, obj) { if ($v.r(obj, 'text')) { $v.cm($v.cm($v.ro('document'), 'getElementById', [ 'interact' ]), 'setInnerHTML', [ 'Populated!' ]); $v.cm($v.cm($v.ro('document'), 'getElementById', [ 'population' ]), 'setInnerHTML', [ $v.r(obj, 'errors') ]); } } response$_caller.FUNC___ = 'response$_caller'; var response;; response = $v.dis(___.primFreeze(response$_caller), 'response'); return response;
  • 36. Querying Languages – Yahoo! Query Language (YQL)
  • 37.
  • 40.

Editor's Notes

  1. Community ResourcesHelping you be successful in using Yahoo! Web Services isn&apos;t just about code and documentation. We want to make it easy for developers to get in touch with us and others who are using our services to answer and ask questions, toss around ideas, and give your feedback on what services we could offer next.ForumsYDN General BoardsDesign PatternsHotJobsSearchYOSAPTMusicWidgetsGeoPlanetOpenIDY! GroupsAddress BookAnswersFireEagleDel.icio.usTrafficFlickrMailSearchBOSSMapsJavaScriptSilverlightMerchant SolutionsSearch MarketingExceptional PerformanceYUIJava.NetFlashYDN EUAuthPHPPythonRubyPerlEventsWant your tech event appear in the YDN &apos;Upcoming Events&apos; stream on developer.yahoo.com homepage? List your event on Upcoming and then add it to the Yahoo! Developer Network group on Upcoming. If you are setting up a tech event for developers or designers and would like some Yahoo! involvement, please contact us.ExpertsYahoo! Developer Network is on the lookout for experts to share knowledge and help grow our developer communities. If you are interested in applying to moderate a *group* or forum and become an official expert, please contact us for more information. Remember, we pay in hugs, link-love and schwag only.BlogThe YDN blog is where we talk about our various Yahoo! developer offerings and YDN events around the world. Your comments welcome. If you have a suggestion for the blog or a blog post you&apos;d like to write about your experiences using our APIs or services, let us know. We are particularly interested in posts using Yahoo! APIs, tools, webservices and coverage of tech events. If you need inspiration or want to run some ideas by us, please contact us.YDN TheaterYDN Theater is chock-full of API deep dives, developer interviews, cutting- edge technologies, and recaps of tech events you wish you hadn&apos;t missed. If you have an idea for a story, please contact us.
  2. http://developer.yahoo.com/oauth/https://developer.yahoo.com/oauth/guide/http://oauth.net/OAuth Authentication ModelOAuth is a simple, secure, and quick way to publish and access protected data (photos, videos, contact list). It&apos;s an open authentication model based primarily on existing standards that ensures secure credentials can be provisioned and verified by different software platforms.In other words, OAuth allows you to share your private resources stored on one site with another site without having to hand out your user name and password.For a visitor to your site, OAuth is completely transparent. The user experience will be specific to the implementation of both the site requesting access and the one storing the resources, and will adjust to the device being used (web browser, mobile phone, PDA, set-top box).Example user flow:A developer has created an application which will allow his users to represent their presence using the Yahoo! Status web service. Once the developer signs up for an OAuth API Key and Secret (provided by Yahoo!), they may access Yahoo&apos;s OAuth API to establish the credentials used to access this data from Yahoo! Status. When a user interacts with the developer&apos;s application, they are redirected to Yahoo&apos;s authentication page, where they sign into their Yahoo! account, then grant the application access to their Yahoo! Status data. A user-authorized token is returned to the application which can be used to access this data.How Do I Get Started?Get an API KeyRead the online documentationGet our PHP SDK or Flash SDK (optional)Using the API or Web ServiceFor an illustration of the OAuth authentication flow, check out the Yahoo! OAuth Quick Start Guide.In order to communicate with their target user&apos;s Yahoo services through OAuth, developers must first authenticate requests using Yahoo! OAuth.Here are the steps you take to enable users to access your application:1) Sign Up and Get your API Key2) Get a Request Token3) Get User Approval4) Exchange the Request Token for an Access TokenSupport and CommunityQuestions and suggestions on the OAuth API are discussed on the Yahoo! OAuth Developer Community forum. If you have questions or need technical support, please use this forum.Terms of UseUse of the Yahoo! OAuth API is governed by the Yahoo! APIs Terms of Use.The OAuth StandardYahoo!&apos;s OAuth implementation is fully compliant with OAuth Core 1.0 and the OAuth Session Extension draft (1). In order to support OAuth in a scalable way, Yahoo! proposed and helped create the OAuth Session Extension together with AOL and Google. The extension is currently being added to all the major OAuth client libraries as well as the Y!OS SDK. For more information on the standard, visit: http://oauth.net/.
  3. Missed connections, this is how you find them.