Javascript HybridAuth不使用ajax

Javascript HybridAuth不使用ajax,javascript,php,jquery,ajax,hybridauth,Javascript,Php,Jquery,Ajax,Hybridauth,我正在尝试用ajax实现HybridAuth 代码: PHP:(将由ajax调用) 但我总是会遇到以下错误: 无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“” 我知道,这意味着Twitter服务器不允许我的来源。有解决办法吗?是否可以使用ajax进行“一页”注册?(希望是的-在quora.com上它可以工作;) 推特设置: 最好的 Fabian首先,HybridAuth和ajax直接不起作用。但我现在

我正在尝试用ajax实现HybridAuth

代码:

PHP:(将由ajax调用)

但我总是会遇到以下错误:

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”

我知道,这意味着Twitter服务器不允许我的来源。有解决办法吗?是否可以使用ajax进行“一页”注册?(希望是的-在quora.com上它可以工作;)

推特设置:

最好的
Fabian

首先,HybridAuth和ajax直接不起作用。但我现在有一个令人满意的解决方案,我想和你们分享。我是这样做的:

JavaScript:

twitterRegister: function () {
            var self = this;
            self.popupWindow = window.socialPopupWindow = window.open(
                    path.urlRoot + 'ext/socialRegisterAndAUthentication.inc.php?provider=Twitter',
                    "hybridauth_social_sing_on",
                    "location=0,status=0,scrollbars=0,width=800,height=500"
                    );
            var winTimer = setInterval(function ()
            {
                if (self.popupWindow.closed !== false)
                {
                    // !== is required for compatibility with Opera
                    clearInterval(winTimer);

                    //Now twitter register from
                    require(["model/register"], function (registerModel) {
                        var registerM = new registerModel();                      
                        var ajaxRequest = registerM.socialRegister();
                        $.when(ajaxRequest).done(function (response) {
                            console.log(response);
                            self.slideOutRegister("Twitter");
                            self.twitterObject = response;
                            $('#reg_user').val(response.firstName);
                        });
                        $.when(ajaxRequest).fail(function () {
                            self.slideOutRegister("Email");
                        });
                    });
                }
            }, 200);

        },
说明:此功能将打开一个新的弹出窗口。系统将提示用户授权应用程序。setInterval捕捉关闭事件(在关闭事件完成时由窗口本身触发)

socialRegisterAndAUthentication.inc.php:

<?php

session_start();
header('Content-type: text/html');
$provider = $_GET["provider"];
$config = '../libaries/hybridauth/config.php';
require_once( "../libaries/hybridauth/Hybrid/Auth.php" );
try {
    $hybridAuth = new Hybrid_Auth($config);
    $adapter = $hybridAuth->authenticate($provider);
    $_SESSION["userProfile"] = json_encode($adapter->getUserProfile());
    echo "<script type='text/javascript'>";
    echo "window.close();";
    echo "</script>";
} catch (Exception $e) {
    echo "Ooophs, we got an error: ";
}
?>

twitterRegister: function () {
            var self = this;
            self.popupWindow = window.socialPopupWindow = window.open(
                    path.urlRoot + 'ext/socialRegisterAndAUthentication.inc.php?provider=Twitter',
                    "hybridauth_social_sing_on",
                    "location=0,status=0,scrollbars=0,width=800,height=500"
                    );
            var winTimer = setInterval(function ()
            {
                if (self.popupWindow.closed !== false)
                {
                    // !== is required for compatibility with Opera
                    clearInterval(winTimer);

                    //Now twitter register from
                    require(["model/register"], function (registerModel) {
                        var registerM = new registerModel();                      
                        var ajaxRequest = registerM.socialRegister();
                        $.when(ajaxRequest).done(function (response) {
                            console.log(response);
                            self.slideOutRegister("Twitter");
                            self.twitterObject = response;
                            $('#reg_user').val(response.firstName);
                        });
                        $.when(ajaxRequest).fail(function () {
                            self.slideOutRegister("Email");
                        });
                    });
                }
            }, 200);

        },
<?php

session_start();
header('Content-type: text/html');
$provider = $_GET["provider"];
$config = '../libaries/hybridauth/config.php';
require_once( "../libaries/hybridauth/Hybrid/Auth.php" );
try {
    $hybridAuth = new Hybrid_Auth($config);
    $adapter = $hybridAuth->authenticate($provider);
    $_SESSION["userProfile"] = json_encode($adapter->getUserProfile());
    echo "<script type='text/javascript'>";
    echo "window.close();";
    echo "</script>";
} catch (Exception $e) {
    echo "Ooophs, we got an error: ";
}
?>
<?php
session_start();
header('Content-type: application/json');
echo $_GET['callback'] . '(' . "{$_SESSION["userProfile"]}" . ')';
?>