SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
The Big Picture and How to Get Started

Jeff Scudder, Eric Bidelman
5/18/2010
Quick Poll
Google RESTful APIs
Why should you care?

 60+ APIs
    AJAX APIs, Google Data, OpenSocial, Maps, many more

 Tools / Platforms
    Apps Marketplace, App Engine, Android, Chrome, "Your Site"

 Standard protocols
    HTTP, RESTful APIs
    Atom Publishing Protocol (XML), JSON, etc.
    OAuth
 Easy development
    most products have APIs (no need to start from scratch)
    open source client libraries
 Gain large user base
    build on top of popular Google services
    mashups with other web services
Why should you care?

 Developer Tools
    Google Web Toolkit (cross browser Java -> JS compiler)
    Web Elements (AJAX widgets)
    Chart Tools
    Google Eclipse Plugin
    Closure Tools (JS compiler, library)
    Secure Data Connector (access data behind the firewall)
    ...

 Platforms
    App Engine
    Android
    Chrome (extensions, HTML5 apps)
But we can't cover everything...
Today's Agenda
 Web Elements

 AJAX APIs

 Google Data Protocol
    APP, XML, REST, HTTP
    under the hood: raw protocol demo


 Authentication
    …because private data is more interesting

 Demos
    web applications, gadgets, mashups

 Questions & Answers
Google Ajax APIs
Available APIs

 Translate
 Language Detection
 Feeds
 Search
    News
    Local
    Image
    Video
    Blog
    Book
    Patent
    Custom (Web)
Adding custom search to your page


<div id="cse" />
Adding custom search to your page


 google.load('search', '1');
Adding custom search to your page

google.setOnLoadCallback(

 function(){

   new google.search.

    CustomSearchControl().

     draw('cse');

 }, true);
Adding custom search to your page
<!-- Google Custom Search Element -->

<div id="cse" style="width:100%;">Loading</div>

<script src="http://www.google.com/jsapi" type="text/javascript">
</script>

<script type="text/javascript">
 google.load('search', '1');

 google.setOnLoadCallback(function(){
  new google.search.CustomSearchControl().draw('cse');
 }, true);

</script>
The Ajax Playground




   code.google.com/apis/ajax/playground
Search APIs

 Google is known for search!
    LocalSearch, NewsSearch
    WebSearch, ImageSearch
    VideoSearch, PatentSearch
    BlogSearch, BookSearch

 Compatibility
    Firefox 1.5+, IE 6+, Safari, Opera 9+, Google Chrome

 Common loader
    google.load('search', '1');
    google.load('gdata', '1.x', {packages:['blogger']});
    google.load('maps', '2.s');
    google.load('earth', '1');
    google.load('jquery', '1.2.6', {uncompressed:true});
...not just JavaScript

   REST, JSON
  Examples in Flash, PHP, Java


http://ajax.googleapis.com/ajax/services/search/web
?v=1.0&q=Google%20IO"
HTTP?

 URL
 Client request to server
Example: Translate API

  Request

 GET ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%
 20world&langpair=en%7Cit




   q = hello world
   langpair = en|it



http://j.mp/translate-example
Example: Translate API

  Response

 {
  "responseData": {
   "translatedText":"ciao a tutti"
  },
  "responseDetails": null,
  "responseStatus": 200
 }




   translatedText = "ciao a tutti"
REST

Create
  POST /calendar/feeds/default/allcalendars/full
  201 Created


Retrieve
  GET /calendar/feeds/default/allcalendars/full
  200 OK


Update
  PUT /calendar/feeds/default/allcalendars/full/{ID}
  200 OK

Delete
  DELETE /calendar/feeds/default/allcalendars/full/{ID}
  200 OK
Google Data APIs
Google Data Protocol Basics
   HTTP, RESTful, ETags, OAuth
      GET / POST / PUT / DELETE (e.g. CRUD)

   Atom Publishing Protocol (XML), JSON, etc.


                                       Feature         Google   Atom   RSS 2.0
  Extends the APP                                       Data
     authz for desktop/web/mobile      Syndication       Y       Y       Y
     data model (<gd:                  Format
                                       Queries           Y       N       N
     lastModifiedBy>)
     batch operations                  Updates           Y       Y       N

     responses formats (json, jsonc,   Optimistic        Y       N       N
     json-in-script)                   Concurrency

     GData-Version: 2.0                Authenticatio     Y       N       N
                                       n
Example Request - Fetching Data
               GET /feeds/default/private/full/ HTTP/1.1
               Host: docs.google.com
               GData-Version: 3.0
               Authorization: OAuth oauth_token="ACCESS_TOKEN" ...
Example Request - Fetching Data
                                  GET /feeds/default/private/full/ HTTP/1.1
                                  Host: docs.google.com
                                  GData-Version: 3.0
                                  Authorization: OAuth oauth_token="ACCESS_TOKEN" ...
HTTP/1.1 200 OK

<feed xmlns='http://www.w3.org/2005/Atom'
    xmlns:gd='http://schemas.google.com/g/2005'>
 <title>Available Documents - john.doe@gmail.com</title>
 <entry>
  <id>http://docs.google.com/feeds/.../document%3Aabc123</id>
  ...
  <title type='text'>Document Title</title>
    <category scheme="..." term="..." label="document"/>
  <content type="text/html" src="..."/>
  <link rel="alternate" type="text/html" href="..."/>
  <link rel="edit" href="..."/>
  <author>...</author>
  <gd:resourceId>document:abc123</gd:resourceId>
  <gd:lastViewed>2009-04-09T17:13:17.453Z</gd:lastViewed>
  ...
 </entry>
 <entry>...</entry>
</feed>
Client Libraries




   Provide high level APIs to the protocol (better than
   XML!)

   Sample applications - http://tr.im/jQvc
"What Can I Build?"
Search / Discovery APIs
Admin. / Data Management APIs
Content Creation / Publishing APIs
Apps / Office Productivity APIs
20+ Data APIs and counting...
Wide variety of services
It's Your Data!

           http://www.dataliberation.org
Authorization
Authorization

Problems: Authentication is difficult
   Private resources
   Security considerations

Solution: Let Google handle it!
   Authorization not Authentication
   Tokens not credentials
   User grants/denies access to their private data
OAuth
 Similar to AuthSub
    - single mode: ALL requests must be signed



 Web OR Desktop apps


 Open standard
    - popularity (Google, Twitter, Facebook, Yahoo, Flickr)
    - open source libraries: oauth.net
    - reuse authentication code from another project
Demos
DEMO: Blogger Gadget

            http://bit.ly/blogger_gadget
Read / Write JS Library

 Handles the details of loading data from Google

 Supports READ and WRITE operations

 Multiple authentication methods (AuthSub/OAuth Proxy)

 Works XD using iframe

 Wraps the gadgets.io.makeRequest() function (in gadget
 environments)

 More info: http://bit.ly/js-client
Blogger Gadget - creating data
blogger.getBlogFeed('http://www.blogger.com/feeds/default/blogs', function(resp) {

 postData(resp.feed.getEntries()[0]);

}, handleError);



function postData(blog) {
 var newEntry = new google.gdata.blogger.BlogPostEntry({
   title: {
    type: 'text',
    text: 'New Blogger Gadget'
   },
   content: {
    type: 'text',
    text: "Isn't Blogger great?"
   },
   categories: [{
    scheme: 'http://www.blogger.com/atom/ns#',
Blogger Gadget - callback handlers

function handleInsert(entryRoot) {
    var href = entryRoot.entry.getHtmlLink().getHref();
    $('main').innerHTML = '<a href="' + href +
    '" target="new">View post</a>';
}


function handleError(e) {
    var msg = e.cause ? e.cause.statusText + ': ' : '';
    msg += e.message;
    alert('Error: ' + msg);
}
"What Can I Build?"
Demo: Cloudie

                                                                      Java library

                                                                      Google Web Toolkit

                                                                      App Engine

                                                                      Docs / Spreadsheets


             http://docs.cloudie.org



* Screenshot from: http://docs.cloudie.org, Developer: Bobby Soares
Relevant Sessions

Bringing Google to your site

    Date: Tomorrow
    Time: 10:45am-11:45am



Connecting your enterprise applications with Google Docs and Sites

    Date: Thursday
    Time: 11:30am-12:30pm
Resources

Google Data APIs:
   http://code.google.com/apis/gdata/


OAuth Playground and other LIVE samples:
   http://www.googlecodesamples.com/

AJAX APIs:
   http://code.google.com/apis/ajax
Questions?

Mais conteúdo relacionado

Mais procurados

Html5 tutorial
Html5 tutorialHtml5 tutorial
Html5 tutorial
madhavforu
 

Mais procurados (18)

Introducing Hangout Apps
Introducing Hangout AppsIntroducing Hangout Apps
Introducing Hangout Apps
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Java Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreJava Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : Datastore
 
Url programming
Url programmingUrl programming
Url programming
 
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
 
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
 
Servlets intro
Servlets introServlets intro
Servlets intro
 
Parse: A Mobile Backend as a Service (MBaaS)
Parse: A Mobile Backend as a Service (MBaaS)Parse: A Mobile Backend as a Service (MBaaS)
Parse: A Mobile Backend as a Service (MBaaS)
 
RESTFUL SERVICES MADE EASY: THE EVE REST API FRAMEWORK - Nicola Iarocci - Co...
RESTFUL SERVICES MADE EASY: THE EVE REST API FRAMEWORK -  Nicola Iarocci - Co...RESTFUL SERVICES MADE EASY: THE EVE REST API FRAMEWORK -  Nicola Iarocci - Co...
RESTFUL SERVICES MADE EASY: THE EVE REST API FRAMEWORK - Nicola Iarocci - Co...
 
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App EngineJava Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
 
REST with Eve and Python
REST with Eve and PythonREST with Eve and Python
REST with Eve and Python
 
Micro app-framework
Micro app-frameworkMicro app-framework
Micro app-framework
 
Grails Plugins(Console, DB Migration, Asset Pipeline and Remote pagination)
Grails Plugins(Console, DB Migration, Asset Pipeline and Remote pagination)Grails Plugins(Console, DB Migration, Asset Pipeline and Remote pagination)
Grails Plugins(Console, DB Migration, Asset Pipeline and Remote pagination)
 
Html5 tutorial
Html5 tutorialHtml5 tutorial
Html5 tutorial
 
Android query
Android queryAndroid query
Android query
 
Php frameworks
Php frameworksPhp frameworks
Php frameworks
 
Open Source Ajax Solution @OSDC.tw 2009
Open Source Ajax  Solution @OSDC.tw 2009Open Source Ajax  Solution @OSDC.tw 2009
Open Source Ajax Solution @OSDC.tw 2009
 
Parse Advanced
Parse AdvancedParse Advanced
Parse Advanced
 

Destaque

Ipuin multimedia
Ipuin multimediaIpuin multimedia
Ipuin multimedia
Pozik
 
Ipuin multimedia
Ipuin multimediaIpuin multimedia
Ipuin multimedia
Pozik
 
Tekno lana
Tekno lanaTekno lana
Tekno lana
Pozik
 
Ipuin multimedia
Ipuin multimediaIpuin multimedia
Ipuin multimedia
Pozik
 

Destaque (17)

Daily cleaners
Daily  cleanersDaily  cleaners
Daily cleaners
 
Hilverda De Boer USA Introduction 2014
Hilverda De Boer USA Introduction 2014Hilverda De Boer USA Introduction 2014
Hilverda De Boer USA Introduction 2014
 
Sustainability Training Workshop - Intro to the SSI
Sustainability Training Workshop - Intro to the SSISustainability Training Workshop - Intro to the SSI
Sustainability Training Workshop - Intro to the SSI
 
#Hack4good 0.6 PalmDetective
#Hack4good 0.6 PalmDetective#Hack4good 0.6 PalmDetective
#Hack4good 0.6 PalmDetective
 
Thomas Coughlin
Thomas CoughlinThomas Coughlin
Thomas Coughlin
 
A Psych-icle Built for Two
A Psych-icle Built for TwoA Psych-icle Built for Two
A Psych-icle Built for Two
 
T4 narratva anys_70
T4 narratva anys_70T4 narratva anys_70
T4 narratva anys_70
 
Power point 2
Power point 2Power point 2
Power point 2
 
Data Shaping Consumer Decisions and 5 Key Trends in User Behaviour and Tech...
Data Shaping Consumer Decisions and 5 Key Trends in User Behaviour and Tech...Data Shaping Consumer Decisions and 5 Key Trends in User Behaviour and Tech...
Data Shaping Consumer Decisions and 5 Key Trends in User Behaviour and Tech...
 
Collaborations Workshop Lightning Talks
Collaborations Workshop Lightning TalksCollaborations Workshop Lightning Talks
Collaborations Workshop Lightning Talks
 
How Advertising Sells
How Advertising SellsHow Advertising Sells
How Advertising Sells
 
for friends
for friendsfor friends
for friends
 
Ipuin multimedia
Ipuin multimediaIpuin multimedia
Ipuin multimedia
 
Ipuin multimedia
Ipuin multimediaIpuin multimedia
Ipuin multimedia
 
Degisim zirvesi
Degisim zirvesiDegisim zirvesi
Degisim zirvesi
 
Tekno lana
Tekno lanaTekno lana
Tekno lana
 
Ipuin multimedia
Ipuin multimediaIpuin multimedia
Ipuin multimedia
 

Semelhante a The Big Picture and How to Get Started

Googleappengineintro 110410190620-phpapp01
Googleappengineintro 110410190620-phpapp01Googleappengineintro 110410190620-phpapp01
Googleappengineintro 110410190620-phpapp01
Tony Frame
 
12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat
Jonathan Linowes
 
Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Data
deimos
 
Google cloud platform
Google cloud platformGoogle cloud platform
Google cloud platform
rajdeep
 

Semelhante a The Big Picture and How to Get Started (20)

Google Apps Script: The authentic{ated} playground [2015 Ed.]
Google Apps Script: The authentic{ated} playground [2015 Ed.]Google Apps Script: The authentic{ated} playground [2015 Ed.]
Google Apps Script: The authentic{ated} playground [2015 Ed.]
 
前端概述
前端概述前端概述
前端概述
 
Intro to new Google cloud technologies: Google Storage, Prediction API, BigQuery
Intro to new Google cloud technologies: Google Storage, Prediction API, BigQueryIntro to new Google cloud technologies: Google Storage, Prediction API, BigQuery
Intro to new Google cloud technologies: Google Storage, Prediction API, BigQuery
 
HTML5 for Rich User Experience
HTML5 for Rich User ExperienceHTML5 for Rich User Experience
HTML5 for Rich User Experience
 
CTS Conference Web 2.0 Tutorial Part 2
CTS Conference Web 2.0 Tutorial Part 2CTS Conference Web 2.0 Tutorial Part 2
CTS Conference Web 2.0 Tutorial Part 2
 
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
Build an AI/ML-driven image archive processing workflow: Image archive, analy...Build an AI/ML-driven image archive processing workflow: Image archive, analy...
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
 
Power your apps with Gmail, Google Drive, Calendar, Sheets, Slides & more
Power your apps with Gmail, Google Drive, Calendar, Sheets, Slides & morePower your apps with Gmail, Google Drive, Calendar, Sheets, Slides & more
Power your apps with Gmail, Google Drive, Calendar, Sheets, Slides & more
 
Spicy javascript: Create your first Chrome extension for web analytics QA
Spicy javascript: Create your first Chrome extension for web analytics QASpicy javascript: Create your first Chrome extension for web analytics QA
Spicy javascript: Create your first Chrome extension for web analytics QA
 
Googleappengineintro 110410190620-phpapp01
Googleappengineintro 110410190620-phpapp01Googleappengineintro 110410190620-phpapp01
Googleappengineintro 110410190620-phpapp01
 
12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat
 
2011 august-gdd-mexico-city-rest-json-oauth
2011 august-gdd-mexico-city-rest-json-oauth2011 august-gdd-mexico-city-rest-json-oauth
2011 august-gdd-mexico-city-rest-json-oauth
 
Google app engine by example
Google app engine by exampleGoogle app engine by example
Google app engine by example
 
Exploring Google (Cloud) APIs with Python & JavaScript
Exploring Google (Cloud) APIs with Python & JavaScriptExploring Google (Cloud) APIs with Python & JavaScript
Exploring Google (Cloud) APIs with Python & JavaScript
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
 
Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Data
 
Google cloud platform
Google cloud platformGoogle cloud platform
Google cloud platform
 
Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineDeveloping Java Web Applications In Google App Engine
Developing Java Web Applications In Google App Engine
 
Microsoft Graph: Connect to essential data every app needs
Microsoft Graph: Connect to essential data every app needsMicrosoft Graph: Connect to essential data every app needs
Microsoft Graph: Connect to essential data every app needs
 
Microsoft Graph: Connect to essential data every app needs
Microsoft Graph: Connect to essential data every app needsMicrosoft Graph: Connect to essential data every app needs
Microsoft Graph: Connect to essential data every app needs
 

Último

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Último (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

The Big Picture and How to Get Started

  • 1. The Big Picture and How to Get Started Jeff Scudder, Eric Bidelman 5/18/2010
  • 4. Why should you care? 60+ APIs AJAX APIs, Google Data, OpenSocial, Maps, many more Tools / Platforms Apps Marketplace, App Engine, Android, Chrome, "Your Site" Standard protocols HTTP, RESTful APIs Atom Publishing Protocol (XML), JSON, etc. OAuth Easy development most products have APIs (no need to start from scratch) open source client libraries Gain large user base build on top of popular Google services mashups with other web services
  • 5. Why should you care? Developer Tools Google Web Toolkit (cross browser Java -> JS compiler) Web Elements (AJAX widgets) Chart Tools Google Eclipse Plugin Closure Tools (JS compiler, library) Secure Data Connector (access data behind the firewall) ... Platforms App Engine Android Chrome (extensions, HTML5 apps)
  • 6. But we can't cover everything...
  • 7. Today's Agenda Web Elements AJAX APIs Google Data Protocol APP, XML, REST, HTTP under the hood: raw protocol demo Authentication …because private data is more interesting Demos web applications, gadgets, mashups Questions & Answers
  • 8.
  • 10. Available APIs Translate Language Detection Feeds Search News Local Image Video Blog Book Patent Custom (Web)
  • 11. Adding custom search to your page <div id="cse" />
  • 12. Adding custom search to your page google.load('search', '1');
  • 13. Adding custom search to your page google.setOnLoadCallback( function(){ new google.search. CustomSearchControl(). draw('cse'); }, true);
  • 14. Adding custom search to your page <!-- Google Custom Search Element --> <div id="cse" style="width:100%;">Loading</div> <script src="http://www.google.com/jsapi" type="text/javascript"> </script> <script type="text/javascript"> google.load('search', '1'); google.setOnLoadCallback(function(){ new google.search.CustomSearchControl().draw('cse'); }, true); </script>
  • 15. The Ajax Playground code.google.com/apis/ajax/playground
  • 16. Search APIs Google is known for search! LocalSearch, NewsSearch WebSearch, ImageSearch VideoSearch, PatentSearch BlogSearch, BookSearch Compatibility Firefox 1.5+, IE 6+, Safari, Opera 9+, Google Chrome Common loader google.load('search', '1'); google.load('gdata', '1.x', {packages:['blogger']}); google.load('maps', '2.s'); google.load('earth', '1'); google.load('jquery', '1.2.6', {uncompressed:true});
  • 17. ...not just JavaScript REST, JSON Examples in Flash, PHP, Java http://ajax.googleapis.com/ajax/services/search/web ?v=1.0&q=Google%20IO"
  • 18. HTTP? URL Client request to server
  • 19. Example: Translate API Request GET ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello% 20world&langpair=en%7Cit q = hello world langpair = en|it http://j.mp/translate-example
  • 20. Example: Translate API Response { "responseData": { "translatedText":"ciao a tutti" }, "responseDetails": null, "responseStatus": 200 } translatedText = "ciao a tutti"
  • 21. REST Create POST /calendar/feeds/default/allcalendars/full 201 Created Retrieve GET /calendar/feeds/default/allcalendars/full 200 OK Update PUT /calendar/feeds/default/allcalendars/full/{ID} 200 OK Delete DELETE /calendar/feeds/default/allcalendars/full/{ID} 200 OK
  • 23. Google Data Protocol Basics HTTP, RESTful, ETags, OAuth GET / POST / PUT / DELETE (e.g. CRUD) Atom Publishing Protocol (XML), JSON, etc. Feature Google Atom RSS 2.0 Extends the APP Data authz for desktop/web/mobile Syndication Y Y Y data model (<gd: Format Queries Y N N lastModifiedBy>) batch operations Updates Y Y N responses formats (json, jsonc, Optimistic Y N N json-in-script) Concurrency GData-Version: 2.0 Authenticatio Y N N n
  • 24. Example Request - Fetching Data GET /feeds/default/private/full/ HTTP/1.1 Host: docs.google.com GData-Version: 3.0 Authorization: OAuth oauth_token="ACCESS_TOKEN" ...
  • 25. Example Request - Fetching Data GET /feeds/default/private/full/ HTTP/1.1 Host: docs.google.com GData-Version: 3.0 Authorization: OAuth oauth_token="ACCESS_TOKEN" ... HTTP/1.1 200 OK <feed xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'> <title>Available Documents - john.doe@gmail.com</title> <entry> <id>http://docs.google.com/feeds/.../document%3Aabc123</id> ... <title type='text'>Document Title</title> <category scheme="..." term="..." label="document"/> <content type="text/html" src="..."/> <link rel="alternate" type="text/html" href="..."/> <link rel="edit" href="..."/> <author>...</author> <gd:resourceId>document:abc123</gd:resourceId> <gd:lastViewed>2009-04-09T17:13:17.453Z</gd:lastViewed> ... </entry> <entry>...</entry> </feed>
  • 26. Client Libraries Provide high level APIs to the protocol (better than XML!) Sample applications - http://tr.im/jQvc
  • 27. "What Can I Build?"
  • 29. Admin. / Data Management APIs
  • 30. Content Creation / Publishing APIs
  • 31. Apps / Office Productivity APIs
  • 32. 20+ Data APIs and counting...
  • 33. Wide variety of services
  • 34. It's Your Data! http://www.dataliberation.org
  • 36. Authorization Problems: Authentication is difficult Private resources Security considerations Solution: Let Google handle it! Authorization not Authentication Tokens not credentials User grants/denies access to their private data
  • 37. OAuth Similar to AuthSub - single mode: ALL requests must be signed Web OR Desktop apps Open standard - popularity (Google, Twitter, Facebook, Yahoo, Flickr) - open source libraries: oauth.net - reuse authentication code from another project
  • 38. Demos
  • 39. DEMO: Blogger Gadget http://bit.ly/blogger_gadget
  • 40. Read / Write JS Library Handles the details of loading data from Google Supports READ and WRITE operations Multiple authentication methods (AuthSub/OAuth Proxy) Works XD using iframe Wraps the gadgets.io.makeRequest() function (in gadget environments) More info: http://bit.ly/js-client
  • 41. Blogger Gadget - creating data blogger.getBlogFeed('http://www.blogger.com/feeds/default/blogs', function(resp) { postData(resp.feed.getEntries()[0]); }, handleError); function postData(blog) { var newEntry = new google.gdata.blogger.BlogPostEntry({ title: { type: 'text', text: 'New Blogger Gadget' }, content: { type: 'text', text: "Isn't Blogger great?" }, categories: [{ scheme: 'http://www.blogger.com/atom/ns#',
  • 42. Blogger Gadget - callback handlers function handleInsert(entryRoot) { var href = entryRoot.entry.getHtmlLink().getHref(); $('main').innerHTML = '<a href="' + href + '" target="new">View post</a>'; } function handleError(e) { var msg = e.cause ? e.cause.statusText + ': ' : ''; msg += e.message; alert('Error: ' + msg); }
  • 43. "What Can I Build?"
  • 44. Demo: Cloudie Java library Google Web Toolkit App Engine Docs / Spreadsheets http://docs.cloudie.org * Screenshot from: http://docs.cloudie.org, Developer: Bobby Soares
  • 45. Relevant Sessions Bringing Google to your site Date: Tomorrow Time: 10:45am-11:45am Connecting your enterprise applications with Google Docs and Sites Date: Thursday Time: 11:30am-12:30pm
  • 46. Resources Google Data APIs: http://code.google.com/apis/gdata/ OAuth Playground and other LIVE samples: http://www.googlecodesamples.com/ AJAX APIs: http://code.google.com/apis/ajax