无法打开流:没有这样的文件或目录

时间:2013-12-18 20:56:43

标签: ajax yii hybridauth

我正在尝试使用hybridauth version 2.1.2并使用this tutorial to install it.,遗憾的是我收到此错误。

include(/Applications/XAMPP/xamppfiles/htdocs/dev/protected/extensions/components/HybridAuthIdentity.php): failed to open stream: No such file or directory 

我的目录结构是这样的

/*numbers indicate the folder or file depth*/
 1 components
   2 HybridAuthIdentity.php

 1 controllers
   2 SiteController.php

 1 extensions
   2 HybridAuth
     3 hybridauth-2.1.2
       4 hybridauth
         5 index.php
         5 Hybrid
           6 Auth.php

为什么要查找此目录protected/extensions/components中的文件而不只是protected/components?我编辑了我的 actionLogin()(下面)我认为错误就在这行Yii::import('ext.components.HybridAuthIdentity');

当我在登录页面点击此内容时弹出错误(我的登录页面为http://mysite/login

<a href="http://mysite/login?provider=facebook" ><img src="images/buttons/facebook.png"  /></a>
有人能帮帮我吗?提前谢谢。

 /**
     * Displays the login page
     */
    public function actionLogin() {
        //action only for the login from third-party authentication providers, such as Google, Facebook etc. Not for direct login using username/password
        if (!isset($_GET['provider']))
        {
            if(app()->user->isGuest()){
                $model = new LoginForm;

                // if it is ajax validation request
                if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
                    echo CActiveForm::validate($model);
                    app()->end();
                }

                // collect user input data
                if (isset($_POST['LoginForm'])) {
                    $model->attributes = $_POST['LoginForm'];
                    // validate user input and redirect to the previous page if valid
                    if ($model->validate() && $model->login()) {
                        $user = app()->user->getUser();
                        User::model()->updateByPk($user->id, array('last_login' => new CDbExpression('NOW()')));
                        if (isset($_POST['ajax'])) {
                            echo app()->user->getHomeUrl();
                            app()->end();
                        } else {
                            $this->redirect(app()->user->returnUrl);
                        }
                    } else {
                        if (isset($_POST['ajax'])) {
                            echo "bad";
                            app()->end();
                        } else {
                            app()->user->setFlash('error', 'Login failed. Please try again.');
                        }
                    }
                }
                // display the login form
                $this->render('login', array('model' => $model));
            } else {
                $this->redirect(array('/user/update', 'id' => app()->user->id));
            }
        }
        else {
            try
            {
                Yii::import('ext.components.HybridAuthIdentity');
                $haComp = new HybridAuthIdentity();
                if (!$haComp->validateProviderName($_GET['provider']))
                    throw new CHttpException ('500', 'Invalid Action. Please try again.');

                $haComp->adapter = $haComp->hybridAuth->authenticate($_GET['provider']);
                $haComp->userProfile = $haComp->adapter->getUserProfile();

                $haComp->login();
                $this->redirect('');  //redirect to the user logged in section..

                $haComp->processLogin();  //further action based on successful login or re-direct user to the required url
            }
            catch (Exception $e)
            {
                //process error message as required or as mentioned in the HybridAuth 'Simple Sign-in script' documentation
                $this->redirect('/site/index');
                return;
            }   
        }
    }

1 个答案:

答案 0 :(得分:1)

你是对的。该行应为Yii::import('app.components.HybridAuthIdentity')。但是,由于components文件夹中的类默认是自动加载的,因此该行甚至不应该存在。