2011-01-18 8 views
1

Zend_Auth_Adapter_OpenIdを使用するときにSREG拡張値を取得する方法がわかりません。私はこれらのドキュメントページを以下のよ:にZend_Authのドキュメントで
http://framework.zend.com/manual/en/zend.auth.introduction.html
http://framework.zend.com/manual/en/zend.openid.consumer.htmlZend_AuthとOpenIDを使用してSREGデータを取得する

、(認証するための2番目の呼び出しを行うためにはOpenIDを使用しているとき、それは言う)、このように:

$auth_result = $auth->authenticate(new Zend_Auth_Adapter_OpenId()); 

そして、 $ auth_resultはZend_Auth_Result :: SUCCESSとして終了します。 Zend_OpenId_Consumerに文書でただし

、返さSREGのデータを取得するためには、それがこれを行うに言う:

$sreg = new Zend_OpenId_Extension_Sreg(array('email'=>false,'fullname'=>false), null, 1.1); 
$consumer = new Zend_OpenId_Consumer(); 
$consumer->verify($_GET, $id, $sreg); 

をさらに検証しているが、あまりにも動作します()がtrueを返し、$ sreg->のgetProperties ()は、私が要求したSREGフィールドを返します。

問題は、私はこれらの両方を行うことができないということです!最初にauthenticate()を呼び出すと、verify()はfalseを返します。最初にverify()を実行すると、authenticate()はZend_Auth_Result :: FAILUREを返します。 Zend/Auth/Adapter/OpenId.phpのコードを見ると、authenticate()が内部的にverify()を呼び出していることが明らかです。しかし、この内部呼び出しによって生成されたSREG値は、私が見ることのできる手段で公開されていません。私は何が欠けていますか?

(これを入力して、私は$ _GET ['openid_sreg_email']のように$ _GETのSREG値を取得できることを発見しましたが、それは意図したパターンのようには見えません。私の問題ですが、まだもっと公式な解決方法があるかどうかを知りたいのですが)。

+0

解決方法を見つけましたか? – emaillenin

+0

私はZendの使用をあきらめました。 janrain OpenIDライブラリはユーザーフレンドリーではありませんが、A)はOpenID 2.0をサポートしており、B)は実際に動作します。 –

答えて

0

ZendはOpenID 2.0とGoogle OpenIDプロバイダを公式にサポートしていません。しかし、Issue trackerから利用可能なパッチがあります。このパッチにはlinkがあります。そのサイトからConsumer.phpを置き換える必要があります。このパッチを適用した後、OpenIDはGoogleやYahoo!

OPについて、OpenIDの結果からSREGを取得すると、GETパラメータにはそのような標準はありません。これは既にStackOverflow hereとMeta StackOverflow hereで一度論じられています。

Attribute Exchangeは、Zend Frameworkで必要とされるもう一つのものです。

関連する質問here

関連する問題