PHPのOpenIDプロバイダーからメールアドレスをリクエストします
質問
OpenIDプロバイダーからメールアドレスをリクエストする最も簡単な方法は何ですか?
この問題を簡素化する優れたPHPライブラリはありますか?
プロバイダーは物事を異なって実装することを知っています。簡単な登録と属性交換の両方を行う必要があると聞きました。特に、MyopenidやGoogleなどの最大のプロバイダーと連携していることを確認したいと思います。
関連するが不十分な質問:
解決
Janrainには ID PHPライブラリを開きます, 、会社中心からOpenIDへの最初の図書館の1つ(私は信じています)。 JanrainのサイトであるMyopenidでの作業について言及しました。
とは言っても、個人的にはZend Libraryを使用しています(数年前にJanrain Libraryでプレイしました)。Zend Frameworkを使用して一般的に開発したからです。
プロバイダーがを使用している場合、ここにいくつかのコード例があります OpenID簡単な登録拡張機能.
これ Zend Referenceのセクション ガイドは、認証要求でユーザー情報をリクエストする方法を示しています。これがあなたのニーズのために編集された彼らの例コードです:
//require e-mail, get nickname and fullname if available
$sreg = new Zend_OpenId_Extension_Sreg(array(
'nickname'=>false,
'email'=>true,
'fullname'=>false), null, 1.1);
$consumer = new Zend_OpenId_Consumer();
if (!$consumer->login($openid, $returnUrl, null, $sreg)) {
die("OpenID login failed.");
}
Janrainライブラリで同じことを達成することは似ています。ここでは、ライブラリパッケージのtry_auth.phpファイルから取られたコードを紹介します(探している基本的な関数を表示するために編集しました):
$auth_request = $consumer->begin($openid);
$sreg_request = Auth_OpenID_SRegRequest::build(
// Required
array('email'),
// Optional
array('fullname', 'nickname'));
$auth_request->addExtension($sreg_request);
為に 属性交換 Janrainをチェックしてください auth_openid_axクラス, 、Zend Libraryにはaがあります AXサポートの機能リクエスト.
他のヒント
私は見ます Zend FrameworkのOpenIDライブラリ、Zend_openid. 。フレームワーク全体なしで使用できるはずです。