symfonyでのOPENIDの実装(2)
前回でたエラーを検索して解決できそうな策をやってみる
「サーバーの時刻合わせ」
OPENIDのシステムはタイムスタンプでも使ってるのかな?と思いました。
サーバーの時間は明らかにずれがあったので正確な時間へセット。
http://makky.jp/blog/cat-4/
「OPENSSLのインストール」
mixiやyahooはSSLが利用されているため、
OPENSSLが導入されていないとOPENIDは使えないもようです。
なのでインストールしました。
http://d.hatena.ne.jp/botchy/20080220
http://memorva.jp/memo/linux/openssl.php
この2つの方法によってmixiでもyahooでもオープンIDでログインできるようになりました。
ついでに、OPENIDでログイン後の処理について。
$response = $consumer->complete('http://'.sfConfig::get("env_host_name").'/openid/finishauth'); $this->getUser()->setAuthenticated(true); $this->getUser()->addCredential('editor'); //OPENIDのログイン情報を取得して新規登録orログインを行う $localid = $response->identity_url; $nickname = $response->message->args->values[8]; $user = HogePeer::login($localid, $nickname); //セッションで値を保持する $this->getUser()->setAttribute('id', $user->getId()); $this->getUser()->setAttribute('nickname', $user->getNickname());
$localidにはユーザー固有の各アカウントのID情報
$nicknameにはmixiではニックネームが入るのでこれを
loginメソッドに渡して、新規か既存ユーザーかのチェックや処理を行う。
そして、ログイン情報を保持するためセッションで値を保持しておく。