OAuth 2.0からのGoogle+ APIの使い方

追記:この情報だいぶ古いので気をつけてください。
こんばんは、ritouです。

タイトルの通り、最近発表されたみんな大好きGoogle+APIではAuthorization部分にOAuth 2.0が使われています。
Getting Started on the Google+ API - Google+ Developers Blog

さっそく出てきた動かしてみた系の記事はAPI keyを使う方法が載っています。まぁそれはそれでいいとして。
OAuth 2.0の仕様知ってる人は必要なScopeとEndpointの仕様が分かればもうサンプル作って動かせると思うので、その部分を紹介します。
そういえば最近、"OAuth認証"やら"ユーザー認証にOAuth"って言葉をよく聞きますがOAuthのどこにそんな機能が(ry

0. OAuth 2.0でGoogle+ API使うための準備

この辺から。たぶん他の人たちも紹介しているので省略します。
Google Cloud Platform

1. Authorizing requests with OAuth 2.0

仕様はこちらです。
Authorizing API requests  |  Google+ Platform for Web  |  Google Developers

AuthZ URLのサンプルはこちら。

https://accounts.google.com/o/oauth2/auth?
client_id=26633205769-n4f7hl7sgeeanj7fl71lusci7ml0b50d.apps.googleusercontent.com&
redirect_uri=http%3A%2F%2Fwww8322u.sakura.ne.jp%2FGoogleOAuth2Sample%2Fserver-side.php&
response_type=code&
scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.me

今回のポイントは一点のみ、scopeパラメータです。
こいつを指定しましょう。

https://www.googleapis.com/auth/plus.me

するとこんな画面が表示されます。

2. Authorization CodeからAccess Token取得

今まで何度も説明しているのでToken Endpointのレスポンスだけ。

{
"access_token":"ya29.AHES6ZQ1P5U3YU60jxn6z-ljtZ67B_MHGkOvh4CaieYOA0DoU2hoge",
"token_type":"Bearer",
"expires_in":3600,
"refresh_token":"1/CNpY-88NAKGRyqrbNnGAZ5Wo5siOXcIAFgiYEPOhoge"
}

あとはAPIにアクセスするだけです。

OAuth 2.0の場合はkeyパラメータはいりません。
OAuth 2.0 bearer tokenの仕様に沿ってAuthorization HeaderやGETのクエリにaccess_tokenの値を指定しましょう。

実際に動いてるモノ

上記のリクエスト/レスポンスは以下のURLで体験/確認できます。
http://www8322u.sakura.ne.jp/GoogleOAuth2Sample/server-side.php
これもう消した

自分でも動かしたいけど1からはちょっとな人向け

Googleさんが用意しているライブラリを使えばいいじゃないすか
http://developers.google.com/+/downloads

APIが少ないなどの意見はあるものの、最初なのでこんなもんだと思います。
People APIPortable Contacts、Activityの方はActivityStrea.msという標準化されている仕様に沿って実装されているのは素晴らしいですね。Googleのライブラリ使わずとも、既にあるライブラリを使っても簡単に動かせる(かも)ということです。

ではまた。