OpenIDやOauthを使ってログイン連携をする時に必要だったことまとめ

一通り連携をしできたので情報として必要だったことをことをまとめておきます

PHPのモジュールとしてはopenid/php-openid · GitHubがメジャーそう
Zend Frameworkにも標準搭載されてるので使えるのかな??((他のフレームワークにも用意されてることが多いみたい))
OpenIDは規格が厳密っぽいのですべて同じ方式でとってこれる((厳密に言えば1系と2系があるみたいだけど1系のはてなもとってこれたので気にしない))

mixi

仕様 << mixi Developer Center (ミクシィ デベロッパーセンター)
取れるのはニックネームだけみたい

google

Gmail OpenID のエンドポイント URL – 京の路

emailとかを取るにはAttribute eXchangeを使う

Federated Login for Google Account Users – Google Accounts Authentication and Authorization — Google Developers

この辺が取れるっぽい
~~~
“country”
“email”
“firstname”
“language”
“lastname”
~~~

リクエスト部分

~~~
global $ax_attributes;
$ax_request = new Auth_OpenID_AX_FetchRequest();
while (list($key, $val) = each($ax_attributes)) {
$attribute[] = Auth_OpenID_AX_AttrInfo::make($key, 1, true, $val);
}
foreach($attribute as $attr){
$ax_request->add($attr);
}
$auth_request->addExtension($ax_request);

~~~

レスポンス部分

~~~
$ax_resp = Auth_OpenID_AX_FetchResponse::fromSuccessResponse($response);

if ($ax_resp) {
global $ax_attributes;
while (list($key, $val) = each($ax_attributes)) {
$ax_data = $ax_resp->get($key);
if(!is_object($ax_data)) {
$axreg[$val] = $ax_data;
$success .= “

$val
$ax_data[0]

“;
}
}
}
~~~

NTTID

goo,docomo,ocnをまとめた感じ。

AX非対応みたい
ニックネームすら返ってこない((gooでしか試してないけど・・・))

エンドポイント https://login.nttid.jp/openid

facebook

OpenIDとは別規格??

クイックスタート - JavaScript用Facebook SDK - ドキュメンテーション - Meta for Developers

今回は連携しなかったので忘れる

Twitter

これだけOauthという別規格。
作法がちょっと違うけど、情報は多いし簡単。
APIの仕様は結構変わるのでそこだけ心配

モジュールはこれが使い慣れてるのでこれを使う((twitteroauthのなかのjson_decodeの第二引数が入ってないのが不便なので書き換えちゃうといいかもしれません))
abraham/twitteroauth · GitHub

Zendフレー(ry

php-curlが必要

ない場合はモジュールの書き換えが必要
入れられる場合は入れましょう

~~~
yum install php-curl
~~~

ソースの場合はごにょごにょする

下準備

http://twitter.com/oauth_clients でアプリケーションを登録((twitterのアカウントが必要です))
consumer_key, consumer_key_secret を取得

ログイン時に引っ張って来たいデータはこのAPI

GET account/verify_credentials | Twitter Developers

~~~
$verify_credentials = $connection->get(‘account/verify_credentials’);
~~~

コメント

タイトルとURLをコピーしました