6

私はCakePHPでHybridAuth2を使用しており、コントローラー機能は次のとおりです

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 ライブラリは、app フォルダーの下の webroot フォルダーにあります。

ただし、ケース6のエラーが発生します。つまり

case 6 : $error = "ユーザー プロファイルのリクエストに失敗しました。ユーザーがプロバイダーに接続されていない可能性が高く、再度認証する必要があります。";

正確なエラー メッセージはUndefined variable: adapter [APP\Controller\UsersController.php, line 177]、CASE 6 を指しています。

誰が何が起こっているのか提案できますか。これをデバッグできません。

PS これは Google ログインでのみ発生します

よろしく、ガンズ

4

1 に答える 1

8

あなたの質問は半年以上前のものですが、ここに解決策があります:

https://console.developers.google.com/にアクセスして、Google+ API アクセスを有効にします。

私は今日この問題に遭遇しましたが、うまくいきました!

于 2015-03-02T20:33:39.403 に答える