curlやwgetでGoogle Data Serviceの認証を受ける

Google AppsのContactsをコマンドラインで操作しようとして試した時のメモ

まず、Contactsにしろ何にしろ、Appsの非公開(認証しないと見られない)データにアクセスしようとすると、まずはサービスをリクエストするヘッダの中に認証トークンが入っていないと認証エラーになります。
この認証トークンを取得するのが大前提です。
コマンドラインでhttpのリクエスト(postやget)ができるのはcurlやwgetがあるので、これでやってみたいと思います。


curlの場合

curl https://www.google.com/accounts/ClientLogin \
–data-urlencode Email=name@domain \
–data-urlencode Passwd=hoeghoge \
-d accountType=GOOGLE -d source=test-apps -d service=cp
wgetの場合
wgetの場合はpostする内容を別ファイルに書いておくようです。今回はpost.txtとしてみました。
Email=name@domain&Passwd=hogehoge&service=cp&source=test-apps
こんな感じです。実際のリクエストは以下のように
wget –no-check-certificate –post-file post.txt \
https://www.google.com/accounts/ClientLogin -O –
どちらの場合も、以下のようなトークンが発行されます(サンプルです)
SID=DQAAAHYBADCv2pSv7nflacDNwz3zEDUGtrSvNVDcpkSfddi77b3U5s
EaHmP8YLWhmA36F9rk85mL8J5dqo4apn0T1vKz0fPGI9Xtnuet6cuE2ZzYv
rNIwbSC_HjTqF4zudNQnnlDuD2wqZTg1qXI8KhGAQZV4NexHZoQPlabTsG
uRZeIBxj1A
LSID=EUBBBIaBADCl-kNxvRVmcQghpt3cqSMfEooKR9flLOUZqwgP9OrZS
83gseKSdTNeXhxsET7FYenDhceP9lIPOmesH-t9qh-AWUHjjMdZEbUNeF9
mWyzln6Z-FajaiG-cVFkqW0ZJ8ZbnCP30xXj6xFK6QxaAcqy_9Pej8jhEnxS9
E61ftQGPg
Auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS
83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6Hg
AtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQ
VC2132JKOuGh
必要なのは、一番下のAuthの部分です。
serviceは今回はContacts Data APIということでcpにしていますが、別のサービスを使いたい時は別の名前を使う必要があります。一覧がhttp://code.google.com/intl/ja/apis/gdata/faq.html#clientloginにあります。
あとは、このAuthの値を、header情報として以下のように記述してリクエストをすれば認証された状態でアクセスできます。
Authorization: GoogleLogin auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEoo
LNMflLNIQqwgP9OrZS83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48
Je2TO8OcjBj6HgAtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwO
EDjjG3Q53aQVC2132JKOuGh

具体的には、curlの場合
curl --silent --header "Authorization: GOogleLogin auth=(略)" \
"https://www.google.com/m8/feeds/contacts/default/full"

wgetの場合は
wget --no-check-certificate \
--header "Authorization: GoogleLogin auth=(略)" \
--header "Content-Type: application/atom+xml" \
"https://www.google.com/m8/feeds/contacts/default/full"

以上で、Contactsを取得できます。
参考にしたページ
http://code.google.com/intl/ja/apis/gdata/articles/using_cURL.html

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください