2012年3月20日火曜日

Google Appsの2-legged oauth

Google Appsのデータに外部からアクセスしたくて、色々調べていたら、2-legged oauthと言う方法がスマートという事が分かり、色々試してみた。

他の認証方法は
・SSO(シングルサインオン) Apps側での設定が煩雑
・OpenID    よく調べてないけど却下。
・Oauth     2leggedと3legged

んで、何がしたいかって言うと、
pythonのスクリプトから、Appsのデータにアクセスしたい。
の用途では、やり取りの手順が少ない2-legged oauthがスマートという判断。

Googleコードからサンプルスクリプトを引っ張ってきたのがこんな感じ。
import gdata.gauth
import gdata.docs.client

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'
requestor_id = 'any.user@anydomain.com'

client = gdata.docs.client.DocsClient(source='yourCompany-YourAppName-v1')
client.auth_token = gdata.gauth.TwoLeggedOAuthHmacToken(
    CONSUMER_KEY, CONSUMER_SECRET, requestor_id)

# Retrieve user's list of Google Docs
feed = client.GetDocList()
for entry in feed.entry:
  print entry.title.text

そんでもってCONSUMER_KEY,CONSUMER_SECRETには、Appsのドメイン管理>高度なツール>OAuthドメインキーを管理するの所から取って来た、自分とこのドメインとシークレットキーを入力。

pythonの実行環境にeasy_installでgdataなるgoogle data APIを叩く為のモジュールをインストールしないと上記のコードは動きませんのであしからず。

実際に試したみたのですが、幾つかの設定の注意点があるのでそのままでは動きません。
ハマった点を箇条書きに。

・google appsでは動きません。(google apps for buisinessじゃないと駄目)
・サーバ側の情報をwebアプリケーションとしてgoogleに登録する必要があります。
・サーバ側でHTTPSの通信に対応してないと動きません。
・google apps側でもAPIを動かす許可が必要です。

という訳で、必然的にローカルでは正常な動作検証出来ませんし、普通のレンタルサーバでもモジュールの追加の関係で厳しいんじゃないかな?既に何らかの形で公開しているサーバで、root権限持ってるサーバが無いと駄目なので、その時点で結構敷居高めな感じです。
幸い、先日動いたサーバの方で動作検証出来たので事亡きを得ましたが…。

認証さえ通ってしまえば、後はほぼフルコントロールなので、結構色んな事が出来ます。
けれども、要は使い道って感じですね。
でもgoogle appsってまだまだニッチなんだよなぁ。便利なんだけど、エクセルとかに慣れた人とかだとほぼ覚え直しになっちゃうので、その辺が敷居高いのかなぁ。
スタートアップとかだとこんなに便利で低コストなモノ、他に無いんですけどね。

0 件のコメント:

コメントを投稿