2013-11-14 10 views
6

Я использую HybridAuth2 с CakePHP и моя функция контроллера какHybirdAuth запроса профиля пользователя не удалось

public function loginwith($provider) { 
     //  $this->autoRender = false; 
     require_once(WWW_ROOT . 'hybridauth/Hybrid/Auth.php'); 

     $hybridauth_config = array(
      "base_url" => 'http://' . $_SERVER['HTTP_HOST'] . $this->base . "/hybridauth/", // set hybridauth path 
      "providers" => array(
       "Google" => array(
        "enabled" => true, 
        "keys" => array("id" => "clientID", "secret" => "clientSecret") 
       ) 
      ) 
     ); 

     try { 
      // create an instance for Hybridauth with the configuration file path as parameter 
      $hybridauth = new Hybrid_Auth($hybridauth_config); 

      // try to authenticate the selected $provider 
      $adapter = $hybridauth->authenticate($provider); 

      // grab the user profile 
      $user_profile = $adapter->getUserProfile(); 

      debug($user_profile); 
     } catch (Exception $e) { 
      // Display the recived error 
      switch ($e->getCode()) { 
       case 0 : $error = "Unspecified error."; 
        break; 
       case 1 : $error = "Hybriauth configuration error."; 
        break; 
       case 2 : $error = "Provider not properly configured."; 
        break; 
       case 3 : $error = "Unknown or disabled provider."; 
        break; 
       case 4 : $error = "Missing provider application credentials."; 
        break; 
       case 5 : $error = "Authentification failed. The user has canceled the authentication or the provider refused the connection."; 
        break; 
       case 6 : $error = "User profile request failed. Most likely the user is not connected to the provider and he should to authenticate again."; 
        $adapter->logout(); 
        break; 
       case 7 : $error = "User not connected to the provider."; 
        $adapter->logout(); 
        break; 
      } 

      // well, basically you should not display this to the end user, just give him a hint and move on.. 
      $error .= "Original error message: " . $e->getMessage(); 
      $error .= "Trace: " . $e->getTraceAsString(); 
      $this->set('error', $error); 
     } 
    } 

HybridAuth Библиотека находится в папке WebRoot в папке приложения

однако, я получаю ошибку, которая в случае 6 т.е.

случай 6: $ ошибка = «. запрос профиля пользователя не удалось скорее всего, пользователь не подключен к провайдеру, и он должен снова проверить подлинность»;

Точное сообщение об ошибке Undefined variable: adapter [APP\Controller\UsersController.php, line 177], который указывает на прецедентное 6

Может кто-нибудь предложить, что происходит. Я не могу отладить это.

P.S. Это происходит только с Google Вход

С уважением, Пистолеты

+0

Я знаю, что это довольно старый, но я просто получил это тоже и понятия не имею, как я его создал. Мне нужно было перейти на https://security.google.com/settings/security/permissions?pli=1 и отменить мое веб-приложение от Google и снова войти в систему. Мне бы очень хотелось узнать, что вызвало это. – ST0N3

ответ

7

Ваш вопрос более чем полтора года, но здесь вы идете решение:

Перейти к https://console.developers.google.com/ и активировать Google+ доступ к API.

Я столкнулся с этой проблемой ранее сегодня, и это сработало!

+0

Спасибо за ответ! –

+3

Нет проблем. Обычно я парень со всеми вопросами и ответами: D –