OpenIDをOpenCartに導入したときのメモ
簡単に出来るという声も多いので導入してみたが・・・完全に動作するまで3日かかったヨ・・・。
必要なもの
- サンプルをこちらでダウンロード
- cacert.pemをこちらでダウンロード
- JanrainのPHP OpenID Libraryをこちらからダウンロード
で、サンプルをphpが動くサーバーにまず置く。
でPHPのショートタグを許可していない人はここですでに動かないので、php.iniが触れる人はショートタグを有効にするし、
<?php echo $xxx ; ?>を<?=$xxx ?>でも動くように設定を変更する (どんな設定か忘れた)。
php.iniが触れない人は、<?で始まっているスクリプトをすべて<?phpに変更する。
上記の<?=の部分もすべて<?php echo に変更する。
次に、PHP OpenID Libraryを解凍したフォルダ内のAuthだけ必要なので(厳密にはAuthフォルダ内のOpenIDフォルダとYadisフォルダとOpenID.php)それらの相対パスをサンプルのcommon.phpのLine:92で書き換える。
ダウンロードしたcacert.pemもcommon.phpのLine:10で書き換える。
phpinfo()でcurl OpenSSLが使えるか確認をしておく(common.phpでも確認してるけど)。
これで動くはずです。
login_view.phpのログインのアドレスが、
<A href=”login.php?id=https%3A%2F%2Fmixi.jp”><IMG src=”http://winofsql.jp/test/openid/openid_sample/login_btn002.gif” border=0></A>
<br><br>
<A href=”login.php?id=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid”>Google でログイン</A>
<br><br>
<A href=”login.php?id=https%3A%2F%2Fme.yahoo.co.jp”>Yahoo でログイン</A>
こうなっているので、
<A href=”login.php?id=https://mixi.jp”><IMG src=”http://winofsql.jp/test/openid/openid_sample/login_btn002.gif” border=0></A>
<br><br>
<A href=”login.php?id=https://www.google.com/accounts/o8/id”>Google でログイン</A>
<br><br>
<A href=”login.php?id=https://me.yahoo.co.jp”>Yahoo でログイン</A>
に直す(直さないと私の環境ではだめだった。)
yahooはcacert.pem不要だと思っていたら、間違いでした。
二つの問題を残してOpenIDは完成しました。
- Returntoにパラメータつきのパスを設定するとログインは成功してもfailureが帰ってきてしまいます。理由、・・・それで数日使いましたが、結局追求できず、断念;;
- ポップアップウィンドウから実行しようとうすると、Yahooでは認証画面が出るけど、mixiやGoogleでは認証画面が出ない。InlineFlameを使って、Jqueryでモーダル化させての実験結果。こちらも、疲れて断念;;
上記二件について、良案お持ちの方は是非とも教えてくださ~~い!!
OsがLinuxの時はファイルストアのパスのパーミッションが有効かどうか確認する必要があります。