Fork me on GitHub

2010/10/10


このエントリーをはてなブックマークに追加
以前まではreadonlyなAPIでしたが、先日見たら更新出来る様になってた。
Google Buzz API - Google Code

Share Buzz updates New!

Full read/write support with:
  • Activity Streams
  • AtomPub
  • OAuth
  • PubSubHubbub
  • JSON

http://code.google.com/intl/ja/apis/buzz/
これはいかん!とばかりにvimscriptから更新してみた。

今回の対応で、vim-oauth(現在webapi-vimに取り込まれました)に幾らか修正をしました。
mattn's webapi-vim at master - GitHub

webapi-vim: vim interface to Web API

http://github.com/mattn/webapi-vim
以下、使用したスクリプト。
set rtp+=webapi-vim

let request_token_url = "https://www.google.com/accounts/OAuthGetRequestToken"
let access_token_url = "https://www.google.com/accounts/OAuthGetAccessToken"
let auth_url = "https://www.google.com/buzz/api/auth/OAuthAuthorizeToken"
let post_url = "https://www.googleapis.com/buzz/v1/activities/@me/@self"

let consumer_key = $CONSUMER_KEY
let consumer_secret = $CONSUMER_SECRET
let domain = $CONSUMER_DOMAIN
let callback = $CONSUMER_CALLBACK

let [request_token, request_token_secret] = oauth#requestToken(request_token_url, consumer_key, consumer_secret, {"scope": "https://www.googleapis.com/auth/buzz", "oauth_callback": callback})
if has("win32") || has("win64")
  exe "!start rundll32 url.dll,FileProtocolHandler ".auth_url."?oauth_token=".request_token."&domain=".domain."&scope=https://www.googleapis.com/auth/buzz"
else
  call system("xdg-open '".auth_url."?oauth_token=".request_token."'")
endif
let verifier = input("PIN:")
let [access_token, access_token_secret] = oauth#accessToken(access_token_url, consumer_key, consumer_secret, request_token, request_token_secret, {"oauth_verifier": verifier})
echo access_token
echo access_token_secret
let data = ''
\.'<entry xmlns:activity="http://activitystrea.ms/spec/1.0/"'
\.' xmlns:poco="http://portablecontacts.net/ns/1.0"'
\.' xmlns:georss="http://www.georss.org/georss"'
\.' xmlns:buzz="http://schemas.google.com/buzz/2010">'
\.'  <activity:object>'
\.'    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>'
\.'    <content>Bzz! Bzz!</content>'
\.'  </activity:object>'
\.'</entry>'
let ret = oauth#post(post_url, consumer_key, consumer_secret, access_token, access_token_secret, {}, data, {"Content-Type": "application/atom+xml", "GData-Version": "2.0"})
echo ret
Atom APIなのでXMLでポストします。なお、今回GoogleのOAuthを使ったのですが、GoogleのOAuthってドメイン持ってないと使えないんですね。
私はここのサイトを使いましたが、Google App EngineでもOKです。

まずココでドメインを登録します。実はこのドメイン名がconsumer_keyとなります。ドメインを登録するとconsumer_secretが貰えます。
またコールバック先のURLが必要になります。通常登録したドメイン上でもよいのですが、別のサイトでも構わない様です。さらにGoogle OAuthではリクエストトークンを取得する際、およびベリファイアを貰う際にscopeパラメータが必要です。個々のGoogleサービスによって異なりますので、ココの一覧を参照して設定して下さい。なお、Google Buzzについてはリストアップされていませんが、色々探して見つけました。
さて次にアクセストークンを取得するのですが、ここで気をつけないとハマる問題がありあます。
Authentication in the Google Data Protocol - Google Data Protocol - Google Code

https://www.google.com/accounts/OAuthAuthorizeToken, referencing the request token and including the oauth_callback parameter. Google may prompt the user to log into their Google Account. Once authenticated with Google, the user chooses to share their data.

http://code.google.com/intl/ja/apis/gdata/docs/auth/overview.html
Googleのドキュメント通りでは成功しません。実は、このアクセストークン要求先は各サービスによって異なります。ここにアクセスしてもアクセストークン、アクセストークンシークレットは貰えるのですが、これを使ってアクセスしても401が返ります。Google Buzzであれば実際はGoogle Buzz専用の「https://www.google.com/buzz/api/auth/OAuthAuthorizeToken」にアクセスしなければなりません。こちらにはBuzzに対する許可設定画面も出てきます。
google-buzz-api1
ここまでくればあとはAtomでXMLを送ればちゃんとBuzzってくれます。

ちなみにココが証拠ポスト。

追記
ちなみに日本語もOKでした。
Posted at 02:02 in ソフトウェア::vim
Tagged as: buzz, google, google buzz, oauth, vim, vimscript
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip

2010/02/16


このエントリーをはてなブックマークに追加
皆さん、Google Buzz楽しんでますでしょうか。
Google BuzzがTwitter対抗馬と言われて数日経ちました。現状iPhoneやGmailからといった、あるBuzz専用PCサイトではない場所からステータスの更新を行います。iPhone使っていない人もいるかと思いますし、Gmailのインタフェースが肌に合わない人もいるかと思います。
得にGmailのインタフェースではGmailの重さも合わさってか、若干重い気がします。
今日はFirefoxを使ってGoogle Buzzをスマートに扱える方法を紹介したいと思います。
用意するのは
  • Firefox
  • Stylish
この2つです。おそらく既にインストール済みという方もいらっしゃるかと思います。PC専用サイトが無いのにどうやって?と思われるかもしれません。実はこれらを使用してiPhone専用サイトにアクセスするのです。
Firefoxをインストールし、拡張であるStylishをインストールします。
Stylish :: Add-ons for Firefox

Restyle the web with Stylish, a user styles manager. Stylish lets you easily install themes and skins for Google, Facebook, YouTube, Orkut, and many, many other sites. You can even customize Firefox and other programs themselves.

https://addons.mozilla.org/ja/sunbird/addon/2108
インストールしたら以下のURLにアクセスします。
https://m.google.com/app/buzz?force=1
User Agent Switcherは使いません。アクセス後、リロードを繰り返す様な場合は一度Sign OutしてGoogleにログインし直すと上手く行きます。 そしてステータスバーにあるStylishのアイコンを右クリックして「スタイルの管理」「新しいスタイルを書く」をクリックして以下の様に入力します。
google-buzz-sidebar1
次にテキストエリア部に以下を張り付けます。
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document url-prefix("https://m.google.com/app/buzz") {

#lm-following#following-toolbar {
  background: #AACCff !important;
  cursor: pointer;
}
#search-btn-following {
  cursor: pointer;
}
.YX40Ye.CqrfPb.Gks0Tb.leetlb.NmM0jd {
  cursor: pointer;
}

}
入力出来たら保存です。
次にこのページをブックマークし、その後メニューから「ブックマークの管理」を開きます。先ほどブックマークした物を選択し、「このブックマークはサイドバーで読み込む」にチェックを入れます。
google-buzz-sidebar2
あとはブックマークメニューから開くと...
google-buzz-sidebar3
じゃじゃーーーん!完成です。
まぁただ自動でリロードしてくれないのでiPhoneと同じく自分でリロードボタンを押さなければなりませんが、横目でサイドバーを閲覧中にどんどん増えて行って気になるよりは全然マシです。

これでスマートにGoogle Buzzが操作出来る様になりました。ちなみにStylishを使っているのは、iPhoneはカーソルが無いのでGoogle Buzzには元々マウス形状に関するスタイルシートが記述されていないのを修正する為です。あと少し背景色の調整もしています。

Postはもちろん、CommentやLikeも問題なく出来ます。一度試して見られては如何でしょうか。
なお、このサイドバー化のヒントをくれたiratqqさんに感謝を表したいと思います。ありがとうございます!
Posted at 01:48 in web
Tagged as: buzz, google buzz
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip