勉強の為に引用しました。
http://umegusa.hatenablog.jp/entry/2015/03/09/002524
go
revelフレームワークを使ってfacebook認証っぽい何かを実装する
ぶっちゃけ使わなくても全然いけます(確信
いつものようにアプリケーションを作成しましょ。
ルーティングなどは結構適当に作っていいと思います。
TwittweAPIとの違いはFacebookはoauth2を使って認証することです。
oauth2.0のほうが結構楽な気はしてます、毎回面倒な証明書作らなくていいみたいだし。
oauth2.0のほうが結構楽な気はしてます、毎回面倒な証明書作らなくていいみたいだし。
また、oauth2.0用のライブラリは1.0とは違うライブラリを使います。
golang/oauth2 · GitHub
公式なのかな?
goauth2を使ったやつは結構転がってたんですが、oauth2を使ったやつが全然なかったんですよね。。。
golang/oauth2 · GitHub
公式なのかな?
goauth2を使ったやつは結構転がってたんですが、oauth2を使ったやつが全然なかったんですよね。。。
でもgoauth2 is deprecated.とあったのでoauth2を使うしかないような気がしてます。
goauth2 - Go OAuth 2.0 - Google Project Hosting
goauth2 - Go OAuth 2.0 - Google Project Hosting
ということでoauth2を使って認証していくべし!!
認証自体は上記ライブラリを使えばめっちゃ簡単にできます。
ルーティングやらファイル構成は前回の記事を参考にしてみてください。
revelフレームワークを使ってTwitterAPIを叩く! - umegusa's blog
ルーティングやらファイル構成は前回の記事を参考にしてみてください。
revelフレームワークを使ってTwitterAPIを叩く! - umegusa's blog
Facebookアプリの登録を行う
作成したらlocalhostでもcallbackできるように設定します。
第一のつまずきポイント。
第一のつまずきポイント。
登録しないで認証しようとすると上記のように怒られます。
設定はアプリのDashBorad -> Settingsから設定します。
App Domainsにlocalhost, Add PlatformではURLにhttp://localhost/を設定します。
これで、アプリの設定は完了です。
設定はアプリのDashBorad -> Settingsから設定します。
App Domainsにlocalhost, Add PlatformではURLにhttp://localhost/を設定します。
これで、アプリの設定は完了です。
FacebookAPIを叩く!
というわけで実装部分をみてみましょー。
今回は認証を通した人のメールアドレスを取得します。
auth.go
今回は認証を通した人のメールアドレスを取得します。
auth.go
最初にoauth2.Configを定義します。
ClientID,ClientSecretはクライアントアプリのAppID, Secretを指定してください。
ClientID,ClientSecretはクライアントアプリのAppID, Secretを指定してください。
んでまずはリクエストトークン(?)を取得しに行きます。
AuthCodeURLメソッドを呼ぶとAuthURLで設定したURLが呼び出されます。
んでユーザ認証画面に飛ばされ、RedirecdURLに設定したURLにcallbackされます。
んでユーザ認証画面に飛ばされ、RedirecdURLに設定したURLにcallbackされます。
codeパラメータが付加されているので、それを受け取るアクションメソッドも用意します。
Exchangeメソッドに帰ってきたコードを渡すことでアクセストークンを取得できます。
TokenURLに設定したURLにcodeパラメータを付加してアクセスしていますね。
err処理を実装しないとエラーでめっちゃ怒られます。
つまずきポイント2でした。
TokenURLに設定したURLにcodeパラメータを付加してアクセスしていますね。
err処理を実装しないとエラーでめっちゃ怒られます。
つまずきポイント2でした。
その後はトークンをhttpClientに突っ込んでアクセスすればオッケーです。
実行するとアクセスログになんかメールアドレスが表示されているような気がします。
- 公開プロフィール情報)public_profile)
- メールアドレス(email)
- いいね!リスト(user_likes
- 友達リスト(user_friends)
ちなみにこの情報はConfigのScopeに設定する項目になります。
上記を設定することで、使用するユーザにどの権限を使うかを明示的にします。
上記を設定することで、使用するユーザにどの権限を使うかを明示的にします。
0 コメント:
コメントを投稿