2012/07/27

Go on App Engine using Google API

Go言語を使ってApp Engine上にWebアプリを作る際に、
OAuth2 を使って他サービス(google api, facebook, などなど) から情報を取得したい。

その場合は goauth2 というライブラリ(package?)を使える。
http://code.google.com/p/goauth2/
まずは、 goauth2 のライブラリを app engine にデプロイするときにくっつける。
ソースをダウンロードして(今回は oauth.go だけでもいい)
myapp/app.yaml という構造であれば
myapp/code.google.com/p/goauth2/oauth.go といった感じでファイルを配置して、
いつもどおりデプロイすればOK.
で、パッケージを使いたい時は
import (
    ...
    "code.google.com/p/goauth2"
    ...
)
みたいな感じで。

くっつけることができたら使ってみたいわけで、
適当にsampleコードの真似をして書いてみる。
http://golangtutorials.blogspot.jp/2011/11/oauth2-3-legged-authorization-in-go-web.html
デプロイして、試しにアクセスしてみると、
アプリが情報利用することの許可を確認するページが無事表示され、
許可するボタンを押し、callbackされたページまで行くが、
その後、得たtokenを使ってサービスが情報を取得しようとすると、
"permission denied" のエラーが返ってくる・・・

少し調べると、どうやら go on app engine ならではで、
普通にやると OAuthの情報を付けずにリクエストしちゃうらしい・・・
http://stackoverflow.com/questions/11226181/google-app-engine-with-golang-permission-denied-error-on-oauth2-autentificatio
urlfetchパッケージを使ってゴニョゴニョしてあげると、
無事にOAuth情報付きのリクエストが送信され、
無事にデータを取得できた、と。

0 件のコメント:

コメントを投稿