2

OpenId (Google など) でユーザーを登録する必要があります
が、うまくいきません!

私はすでにいくつかのトピックを見てきました:
http://framework.zend.com/issues/browse/ZF-6905
Zend OpenId と Google
その他..

しかし、それはすべてうまくいきません!

ユーザー情報(ログインやメールなど)を取得する必要がありますが、このように使用すると

// $data['openidIdentifier'] = 'https://www.google.com/accounts/o8/id';
public function loginByOpenIdAction() {
    $request = $this->getRequest();
    $form = new Application_Form_UsersLoginByOpenId();

    $this->view->headTitle('Login by OpenId');

    if ($request->isPost()) {
        $data = $request->getPost();
        if ($form->isValid($data)) {
            $consumer = new Zend_OpenId_Consumer();
            $backUrl = $this->getHelper('Url')->url(array('controller' => 'users', 'action' => 'signup-from-open-id'));

            if (!$consumer->login($data['openidIdentifier'], $backUrl)) {
                $this->view->error = 'Can`t connect to OpenId provider';
            }
        }
    }

    $this->view->form = $form;
}

public function signupFromOpenIdAction() {
    $consumer = new Zend_OpenId_Consumer();
    $data = &$_GET;

    $sreg = new Zend_OpenId_Extension_Sreg(array(
        'nickname' => true,
        'email' => false,
        'fullname' => false), null, 1.1
    );

    if ($consumer->verify($data, $id, $sreg)) {
        $properties = $sreg->getProperties();
        var_dump($properties);
        var_dump('allow', $id);
    } else {
        var_dump('deny', $id, $consumer);
    }
    die;
}

出力は次のとおりです。

文字列「拒否」(長さ=4)
文字列 'https://www.google.com/accounts/o8/id?id=fooBarFooBar' (長さ = 80)
オブジェクト (Zend_OpenId_Consumer)[61]
  保護された '_storage' =>
    オブジェクト (Zend_OpenId_Consumer_Storage_File)[62]
      プライベート '_dir' => 文字列 '/tmp/azat/openid/consumer' (長さ = 25)
  保護された '_dumbMode' => ブール値 false
  保護された '_cache' =>
    配列
      空の
  プライベート '_httpClient' => null
  プライベート '_session' => null
  プライベート '_error' => 文字列 'Extension::parseResponse 失敗' (長さ = 32)

助けてください: サインアップ ユーザーの openid サーバー (Google など) からユーザー情報を取得するにはどうすればよいですか?

使用し$consumer->verify($data, $id)ても大丈夫ですが、サインアップにはユーザー情報が必要です

また、ネイティブの Zend_OpenId_Consumerでは機能しないため、この問題http://framework.zend.com/issues/browse/ZF-6905の Zend_OpenId_Consumer を使用します。$consumer->verify($data, $id)

また、いくつかのブローカー、または openid で動作する他のライブラリを使用することも提案されていません。

4

2 に答える 2

4

Akeem Philbert が、少なくとも Google での OpenID の使用をサポートするために、ZF の OpenID 実装を拡張するために使用できる投稿といくつかのファイルを持っています。

http://ak33m.com/?p=71

また、ZF を Facebook や Twitter と連携させる方法についてのブログ投稿もあります。

http://shortrecipes.blogspot.com/2011/02/example-of-openid-facebook-and-twitter.html

@takeshin が指摘したように、残念ながら、ZF はまだ OpenID 2.0 を完全にはサポートしていません。

于 2011-03-15T17:05:32.883 に答える
1

私の知る限り、Zend Framework はまだ OpenID 2.0 を完全にはサポートしていません。

この ZF の問題を参照してください。

http://www.framework.zend.com/issues/browse/ZF-6905?page=com.atlassian.streams.streams-jira-plugin%3Aactivity-stream-issue-tab

代わりに、他の外部ライブラリを使用できます。

于 2011-03-15T11:33:56.743 に答える