0

我有一个带有本地登录系统的应用程序。我想做的是允许用户将他们的 facebook 帐户连接到他们的帐户。我将 Zend Auth 用于我的主要本地登录和 Michael Krotscheck 的 facebook auth。

我可以很好地与 facebook 连接,但是因为我使用的是 Zend_Auth,所以 facebook 数据覆盖了主要的本地登录存储。我所需要的只是用户电子邮件和 facebook id 并将它们插入到我的用户表中。

下面的代码显示了它是如何工作的,我不知道除了使用 Zend Auth 进行 facebook 登录之外的另一种选择。有人有同样的问题吗?建议会很有帮助。

$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');
        }

Ĵ

4

1 回答 1

0

经过更多的stackoverflow拖网后,我找到了解决方案。

Zend_Auth 的多个实例(2)

基本上创建了我自己的 Auth 类并删除了 Zend_Auth 中的单例模式,这允许我创建另一个实例。

Ĵ

于 2012-06-22T13:38:09.380 回答