Question

i'm trying to use hybridauth version 2.1.2 and using this tutorial to install it. unfortunately im getting this error.

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

my directory structure is as such

/*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

why does it look for the file in this directory protected/extensions/components instead of just protected/components? i edited my actionLogin() (below) i think the error is in this line Yii::import('ext.components.HybridAuthIdentity');

the error pops up when i click on this on my login page (my login page is http://mysite/login)

<a href="http://mysite/login?provider=facebook" ><img src="images/buttons/facebook.png"  /></a>

can someone help me? thanks in advance.

 /**
     * 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;
            }   
        }
    }
Was it helpful?

Solution

You are right. That line should read Yii::import('app.components.HybridAuthIdentity'). However, since the classes in the components folder are autoloaded by default this line shouldn't even be there.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top