0

ローカル ログイン システムを備えたアプリがあります。私がやろうとしているのは、ユーザーが Facebook アカウントを自分のアカウントに接続できるようにすることです。メインのローカル ログインには Zend Auth を使用し、Michael Krotscheck による Facebook 認証を使用しています。

Facebook には問題なく接続できますが、Zend_Auth を使用しているため、Facebook データがメインのローカル ログイン ストレージに上書きされます。必要なのは、ユーザーの電子メールと Facebook ID だけで、それらをユーザー テーブルに挿入します。

以下のコードは、すべてがどのように機能するかを示しています。Facebook ログインに Zend Auth を使用する以外の方法はわかりません。誰かが同じ問題を抱えていましたか?アドバイスはとても役に立ちます。

$auth = Zend_Auth::getInstance();

    $adapter = $this->_getFacebookAdapter();

    $result = $auth->authenticate($adapter);

        if ($result->isValid()) {
            $toStore = array('identity' => $auth->getIdentity());

            // for facebook
            $msgs = $result->getMessages();
            $toStore['properties'] = (array) $msgs['user'];
            $toStore['provider'] = "facebook";

            $auth->getStorage()->write($toStore);

            $this->_helper->FlashMessenger('Successful authentication');
            //return $this->_redirect('/index/index');

            // Check if the User is in our dB
            //$users = new My_Model_Users();
            //$userTrue = $users->checkUserExists($userId,$providerName);
            Zend_Debug::dump($toStore);
            Zend_Debug::dump($this->_helper->user());

        } else {                                                

            $this->_helper->FlashMessenger('Failed authentication');
            $this->_helper->FlashMessenger($result->getMessages());
            //return $this->_redirect('/index/index');
        }

J

4

1 に答える 1

0

さらにスタックオーバーフローをトロールした後、私は解決策を見つけました。

Zend_Authの複数のインスタンス(2)

基本的に、独自のAuthクラスを作成し、Zend_Authのシングルトンパターンを削除しました。これにより、別のインスタンスを作成できました。

J

于 2012-06-22T13:38:09.380 に答える