2012.10.13

OpenAM + Facebook

OpenAM10.0 OAuth2.0を使ってみる を参考に。

まず、Facebook Developerサイトに、OpenAM のURLを登録し、APPキーとAPPシークレットを生成する。
https://developers.facebook.com/apps

その後、OpenAM の[アクセス制御]タブで[/(最上位のレルム)]リンクをクリック。
[認証]タブで[モジュールインスタンス]を新規作成する。

このとき、名前をつけて、OAuth2.0を選択する。
このモジュール名を後で使う。(ここでは「Facebook」とする)

作成したモジュールリンクをクリックし、設定する。
Facebook Developerサイトで作ったAPIキーとシークレットを、Client Id, Client Secret として入力する。
あと、Proxy URL を自分のサイトに書き換えろと書いてあるので、~/openam/ の箇所を自分のOpenAMにする。

Create account if it does not exist:
Prompt for password setting and activation code:
の2項目が有効になっているので、やりたいことにあわせて変更すべし。

Create account if it does not exist:
のほうは、FacebookアカウントがOpenAMに登録されてないとき、勝手に登録する。(私は有効にした)
これを無効にしていると、OpenAMに存在しないユーザがログインするとき、
 ユーザーにはこの組織におけるプロファイルがありません。システム管理者に連絡してください。
というエラーになる。

Prompt for password setting and activation code:
のほうは、OpenAMにリダイレクトされたときに、パスワード設定画面が出てくる。
何が起こるかわからなかったので、無効にしてしまった。

そして Facebook にログイン。
OpenAM のログイン画面のURLに、module=モジュール名をパラメータとしてくっつける。
例: http://OpenAMドメイン/openam_10.0.0/UI/Login?module=Facebook

このURLにアクセスしたとき、
 An error occurred with Test. Please try again later.
 API Error Code: 191
 API Error Description: The specified URL is not owned by the application
 Error Message: Invalid redirect_uri: Given URL is not allowed by the Application configuration.
というエラーが出たときは、OpenAM側に設定した Proxy URL が間違ってる可能性があるので要確認。
(私の場合は openam_10.0.0 というパスなのだがopenamのまま修正してなかった)

うまくいけば、Facebook のログインページにリダイレクトされる。
 ○○でFacebookアカウントを利用するにはログインしてください。
というメッセージが出てる。

ログインして、Facebook 画面で Go to App ボタンをクリックする。
 ○○ would also like permission to:
というメッセージが出るので、Allow ボタンをクリック。

そしたら何故か、
 セッションがタイムアウトしました。
というOpenAM画面のエラーが出たが、Facebook にはログインできてた。

さて、これで何ができるかな?


2012.10.13, 21:40 / OpenAM
OpenAM + Facebook はコメントを受け付けていません。

Comments are closed.