The Google Buzz API and You

New York City, July 20th, 2010

Google Confidential and Proprietary

1

Hello
Timothy Jordan Developer Advocate, Google buzz.timothyjordan.com @timothyjordan

Tonight
• This Talk • Answers & Questions • Hack Time • Demos & prizes

This talk
• Google Buzz & The Conversational Web • Open Standards • Google Buzz API • Examples • What’s next?

Google Buzz
...and the conversational web

Open Standards
...are a really good thing

PubSubHubbub

PubSubHubbub
• Discover the Hub

PubSubHubbub
• Discover the Hub

PubSubHubbub
• Discover the Hub • Subscription Request

PubSubHubbub
• Discover the Hub • Subscription Request

PubSubHubbub
• Discover the Hub • Subscription Request • Verify Subscription Request

PubSubHubbub
• Discover the Hub • Subscription Request • Verify Subscription Request

PubSubHubbub
• Discover the Hub • Subscription Request • Verify Subscription Request • Receive Updates

Salmon

Source

Salmon

New Content

Source

Salmon

New Content

Source

PubSubHubbub

Aggregator

Salmon

New Content

New Content
PubSubHubbub

Source

Aggregator

Salmon

New Content

New Content
PubSubHubbub

Source

Aggregator New

Comment

Salmon

New Content

New Content
Salmon

Source

Aggregator New

Comment

Salmon

New Content

New Content
Salmon

Source

New Comment

Aggregator New

Comment

Salmon

New Content

New Content
Salmon

Source

New Comment

Aggregator New

Comment

Salmon

Aggregator Aggregator Aggregator Aggregator Aggregator Aggregator

Salmon

New Content

New Content
Salmon

Source

New Comment

Aggregator New

Comment

Salmon

Content New Content Content Aggregator Content

New New New Comment New New New Comment Comment New New Comment New Comment Content Comment New Content New

Aggregator Aggregator Aggregator Aggregator Aggregator

Activity Streams

Identity

Activity Streams

Identity Activities

Activity Streams

Identity Activities Objects

Activity Streams

Timothy Shares A Link

Activity Streams

Barack Obama Started Following Timothy Jordan

Activity Streams

Timothy Jordan Started Following Barack Obama

Activity Streams

Timothy Jordan Has Tea With Bella Swan

Activity Streams

Timothy Jordan Has Tea With Bella Swan

Google Buzz API

36

Warning!

https://www.googleapis.com/buzz/v1/

https://www.googleapis.com/buzz/v1/

https://code.google.com/apis/buzz/docs/

https://www.googleapis.com/buzz/v1/

http://code.google.com/p/oacurl/

https://www.googleapis.com/buzz/v1/

http://code.google.com/p/buzz-php-client/ http://code.google.com/p/buzz-python-client/ http://code.google.com/p/buzz-java-client/

https://www.googleapis.com/buzz/v1/
alt • alt=atom returns an Atom representation of the data. • alt=json returns a JSON representation of the data. prettyprint • If prettyprint=true, the results • Default: prettyprint=false

returned by the server will be human readable

https://www.googleapis.com/buzz/v1/activities/@me/@self?alt=json&prettyprint=true

https://www.googleapis.com/buzz/v1/
• preview=true • max-results=N • • •

preview the operation. maximum number of results. max-liked=N maximum number of likes max-comments=N maximum number of comments c={token} continuation token

https://www.googleapis.com/buzz/v1/activities/@me/@self?max-results=20&c={token}

https://www.googleapis.com/buzz/v1/
• q={query} • lat, lon, radius • bbox

search. geo location. bounding box.

https://www.googleapis.com/buzz/v1/activities/search?q={q}&lat={l}&lon={l}&radius={r}

Activity Streams

Identity Activities Objects

Timothy Shares A Link

2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson",      "type": "json"     }    ],    "replies": [     {      "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json",      "type": "application/json",      "count": 2,      "updated": "2010-05-09T02:53:13.730Z"     }    ]   },

  "actor": {    "id": "110242419133439594545",    "name": "Chris Chabot",    "profileUrl": "{url}/chabotc",    "thumbnailUrl": "{url}/chabotc/thumb.jpg"   },
  "verbs": [    "post"   ],   "object": {    "type": "note",    "content": "content goes here",    "links": {     "alternate": [      {       "href": "http://www.google.com/buzz/a/google.com",       "type": "text/html"      }     ]    }   },

   ],    "replies": [     {      "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json",      "type": "application/json",      "count": 2,      "updated": "2010-05-09T02:53:13.730Z"     }    ]   },   "actor": {    "id": "110242419133439594545",    "name": "Chris Chabot",    "profileUrl": "{url}/chabotc",    "thumbnailUrl": "{url}/chabotc/thumb.jpg"   },

  "verbs": [    "post"   ],
  "object": {    "type": "note",    "content": "content goes here",    "links": {     "alternate": [      {       "href": "http://www.google.com/buzz/a/google.com",       "type": "text/html"      }     ]    }   },   "source": {    "title": "Buzz"   },   "visibility": {    "entries": [

   ],    "replies": [     {      "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json",      "type": "application/json",      "count": 2,      "updated": "2010-05-09T02:53:13.730Z"     }    ]   },   "actor": {    "id": "110242419133439594545",    "name": "Chris Chabot",    "profileUrl": "{url}/chabotc",    "thumbnailUrl": "{url}/chabotc/thumb.jpg"   },   "verbs": [    "post"   ],

  "object": {    "type": "note",    "content": "content goes here"    }   },
  "source": {    "title": "Buzz"   },   "visibility": {    "entries": [     {      "id": "https://www.googleapis.com/buzz/v1/people/@me/@groups/@public?alt\u003djson",      "title": "Public"     }    ]   }  }

{   "kind": "buzz#activity",

  "title": "note to self",   "published": "2010-05-09T02:53:13.000Z",   "updated": "2010-05-09T02:53:13.730Z",    "id": "tag:google.com,2010:buzz:foo",
  "links": {    "liked": [     {      "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com, 2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4/@liked?alt\u003djson",      "type": "application/json",      "count": 0     }    ],    "alternate": [     {      "href": "http://www.google.com/buzz/a/google.com",      "type": "text/html"     }    ],    "self": [     {      "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com, 2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson",

{   "kind": "buzz#activity",   "title": "note to self",   "published": "2010-05-09T02:53:13.000Z",   "updated": "2010-05-09T02:53:13.730Z",    "id": "tag:google.com,2010:buzz:foo",   "links": {

   "liked": [     {      "href": "{url}/{userid}/@self/{commentId}/@liked?alt=json",      "type": "application/json",      "count": 4, "updated": "2010-05-09T02:53:13.730Z"     }
   ],    "alternate": [     {      "href": "http://www.google.com/buzz/a/google.com",      "type": "text/html"     }    ],    "self": [     {      "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com, 2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson",      "type": "json"

   "alternate": [     {      "href": "http://www.google.com/buzz/a/google.com",      "type": "text/html"     }    ],    "self": [     {      "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com, 2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson",      "type": "json"     }    ],

"replies": [     {      "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json",      "type": "application/json",      "count": 2,      "updated": "2010-05-09T02:53:13.730Z"     }    ]
      },   "actor": {    "id": "110242419133439594545",    "name": "Chris Chabot",    "profileUrl": "http://www.google.com/profiles/a/google.com/110242419133439594545",    "thumbnailUrl": ""   },   "verbs": [    "post"   ],   "object": {

  },   "verbs": [    "post"   ],   "object": {    "type": "note",    "content": "content goes here",    "links": {     "alternate": [      {       "href": "http://www.google.com/buzz/a/google.com",       "type": "text/html"      }     ]    }   },

  "source": {    "title": "Buzz"   },
  "visibility": {    "entries": [     {      "id": "https://www.googleapis.com/buzz/v1/people/@me/@groups/@public?alt\u003djson",      "title": "Public"     }    ]   }  }

  },   "verbs": [    "post"   ],   "object": {    "type": "note",    "content": "content goes here",    "links": {     "alternate": [      {       "href": "http://www.google.com/buzz/a/google.com",       "type": "text/html"      }     ]    }   },   "source": {    "title": "Buzz"   },

"visibility": {    "entries": [     {      "id": "{url}/people/@me/@groups/@public?alt=json",      "title": "Public"     }    ]   }
    }

    "alternate": [      {       "href": "http://www.google.com/buzz/a/google.com",       "type": "text/html"      }     ]    }   },   "source": {    "title": "Buzz"   },   "visibility": {    "entries": [     {      "id": "{url}/people/@me/@groups/@public?alt=json",      "title": "Public"     }    ] },

"geocode": "37.783471 -122.39922", "address": "701-737 Folsom St, San Francisco, CA 94103, USA", "placeName": "300 3rd St, San Francisco, CA 94107"
}  }

  "object": {    "type": "note",    "content": "content goes here",

"attachments": [ { "type": "article", "title": "Name of the link", "links": { "alternate": [ { "href": "{url}/to/article.html", "type": "text/html" } ]
} } ]

  }

  "object": {    "type": "note",    "content": "content goes here",

"attachments": [      {       "type": "photo",       "links": {        "preview": [         {          "href": "{url}/image_thumb.jpg",          "type": "image/jpeg"         }        ],        "enclosure": [         {          "href": "{url}/image.jpg",          "type": "image/jpeg",          "height": 190,          "width": 260         }        ]

   

     }     }    ]   }

   "object": {     "type": "note",     "content": "content goes here", "attachments": [ {

"type": "video", "title": "video description goes here", "links": { "alternate": [ { "href": "http://www.youtube.com/watch?v=abcdef", "type": "text/html" } ], "preview": [ { "href": "{url}/default.jpg", "type": "image/jpeg" }, { "href": "{url}/proxy?thumbnail_default.jpg", "type": "image/jpeg" }
] } } ]

Verbs
Favorite Follow Friend Join Play Post Save Share Tag Update

Objects
Article Audio Bookmark Comment File Folder Group List Note Person Photo Photo Album Place Playlist Product Review Service Status Video

Verbs
Favorite Follow Friend Join Play Post Save Share Tag Update

Objects
Article Audio Bookmark Comment File Folder Group List Note Person Photo Photo Album Place Playlist Product Review Service Status Video

Auth url: scope: domain: iconUrl:

https://www.google.com/buzz/api/auth/OAuthAuthorizeToken https://www.googleapis.com/auth/buzz www.example.org http://www.example.org/icon.png

https://www.google.com/buzz/api/auth/OAuthAuthorizeToken ?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbuzz &domain=www.example.org &oauth_token=

http://code.google.com/p/oacurl/

http://code.google.com/p/oacurl/

mac:~ user$ echo \   '{     "data": {       "object": {         "type": "note",         "content": "Bzz! Bzz! via JSON"       }     }    }'| oacurl -t JSON -X POST \ "https://www.googleapis.com/buzz/v1/activities/@me/@self?alt=json"

http://code.google.com/p/oacurl/

http://code.google.com/p/oacurl/

mac:~ user$ echo '' | oacurl -X PUT \ "https://www.googleapis.com/buzz/v1/activities/@me/@liked/{activityId}"

http://code.google.com/p/oacurl/

http://code.google.com/p/oacurl/

mac:~ user$ oacurl -X DELETE \ "https://www.googleapis.com/buzz/v1/activities/@me/@liked/{activityId}"

Introducing

Introducing

• Comments by the user

Introducing

• Comments by the user • Likes by the user

Introducing

• Comments by the user • Likes by the user • Shared counts

and...

The Google Buzz Firehose is for everyone!

Examples
...for fun and profit

Ping.fm

Marginize

Socialwok

Tweetdeck

Meebo bar

Shareaholic

Klout

Seesmic

Buzzzy

google.com/buzz/apps

Boxee

boxee.tv

TweetDeck

Seesmic

Buzz Bingo
buzz-bingo.appspot.com

Sign-In & Auth for Buzz

client = buzz.Client() client.build_oauth_consumer(   OAUTH_CONSUMER_KEY,   OAUTH_CONSUMER_SECRET ) client.oauth_scopes.append(   buzz.FULL_ACCESS_SCOPE )

Sign-In & Auth for Buzz

request_token = \   client.fetch_oauth_request_token(     'http://example.com/oauth/callback/'   ) # Save request token to the data store authorization_url = \   client.build_oauth_authorization_url(     request_token   )

Sign-In & Auth for Buzz

# User visits the authorization_url

Sign-In & Auth for Buzz

verifier = request.get('oauth_verifier') # Lookup request_token in data store client.oauth_request_token = request_token access_token = \   client.fetch_oauth_access_token(verifier ) # Save access token to the data store

Board Marked

if post.attachments:   for attachment in post.attachments:     if attachment.type == 'article':       self.award_badge('share')       break if post.geocode and \     post.actor.id != self.key().name():   self.award_badge('geo') elif post.geocode:   self.award_badge('mobile')

Board Marked

# Create the attachments for the post badge_attachment = buzz.Attachment(   type='photo', enclosure=badge.badge_icon ) link_attachment = buzz.Attachment(   type='article',   title='Buzz Bingo',   uri='http://buzz-bingo.appspot.com/' )

Board Marked

# Assemble our announcement Buzz post badge_post = buzz.Post(   content=post_content,   attachments=[     badge_attachment,     link_attachment   ],   geocode=VENUE_GEOCODE,   place_id=VENUE_PLACE_ID ) # Create the post self.client.create_post(badge_post)

Bingo!

if (5 in horizontal_counts) or \     (5 in vertical_counts):   self.award_badge('bingo')

Buzz Bingo is open source! code.google.com/p/buzz-bingo buzz-bingo.appspot.com

Conclusion
What’s next?

https://code.google.com/apis/buzz/docs/

https://groups.google.com/group/google-buzz-api

http://code.google.com/p/oacurl/ http://code.google.com/p/buzz-php-client/ http://code.google.com/p/buzz-python-client/ http://code.google.com/p/buzz-java-client/

Answers and Questions...
Timothy Jordan Developer Advocate, Google buzz.timothyjordan.com @timothyjordan

Starter Projects

code.google.com/p/buzz-codelabs

Sign up to vote on this title
UsefulNot useful