Php 如何通过ajax调用实现HybridAuth?
我正在尝试为一个modx站点设置一个SSO登录&我决定尝试使用HybridAuth和Ajax来实现它,尽管我没有遇到一个错误;I don’我不知道如何应对,以下是我所拥有的: 调用jQuery的一组按钮:Php 如何通过ajax调用实现HybridAuth?,php,jquery,ajax,modx,hybridauth,Php,Jquery,Ajax,Modx,Hybridauth,我正在尝试为一个modx站点设置一个SSO登录&我决定尝试使用HybridAuth和Ajax来实现它,尽管我没有遇到一个错误;I don’我不知道如何应对,以下是我所拥有的: 调用jQuery的一组按钮: <button name="googlelogin" type="button" id="googlelogin" class="btn btn-primary googlelogin hybridauthlogin" data-prov
<button
name="googlelogin"
type="button"
id="googlelogin"
class="btn btn-primary googlelogin hybridauthlogin"
data-provider="Google"
data-redirect=""
data-action="/hybridauth.php">Login with Google+
</button>
<button
name="facebooklogin"
type="button"
id="facebooklogin"
class="btn btn-primary facebooklogin hybridauthlogin"
data-provider="Facebook"
data-redirect=""
data-action="/hybridauth.php">Login with Facebook
</button>
$(document).ready(function() {
$('.hybridauthlogin').on('click', function() {
var action = $(this).attr('data-action');
var redirect = $(this).attr('data-redirect');
var provider = $(this).attr('data-provider');
var postdata = {"action": action, "redirect": redirect, "provider": provider };
$.ajax({
type: "POST",
url: action,
dataType : "JSON",
cache : false,
data: postdata,
success: function(data){
console.log("success status posting data" + data);
if(data.status == 'success'){
console.log("success status posting data");
}else if(data.status == 'error'){
console.log("error status posting data");
}
},
error: function(jqxhr,textStatus,errorThrown){
console.log("FATAL: error posting data");
console.log(textStatus);
console.log(errorThrown);
}
});
});
});
还有一个非常简单的php处理器,用于加载modx和HyBridAuth:
<?php
// start a new session (required for Hybridauth)
session_start();
define('MODX_API_MODE', true);
require_once('index.php');
$modx = new modX();
$modx->initialize('web');
// change the following paths if necessary
$config = dirname(__FILE__) . '/assets/components/hybridauth/config.php';
require_once( dirname(__FILE__) . '/assets/components/hybridauth/Hybrid/Auth.php' );
$hybridauth = new Hybrid_Auth( $config );
$google = $hybridauth->authenticate( "Google" );
$output = array(
'status' => 'success',
'message' => 'This is the success message',
);
$output = $modx->toJSON($output);
header('Content-type: application/json');
print $output;
这看起来很简单,有些东西[ajax?]在某处添加了一个标题[不是处理器的最后一行,它是在错误之后添加的]。可能会添加什么标题&如何修复 由于身份验证需要将用户重定向到提供者,因此它不能用于AJAX调用。后端脚本将在重定向函数中消失()。您看到的标题可能是重定向标题
对于另一种解决方案,请检查此方法:为什么不使用?它背后有几个hybridauth版本,不是ajax,它修改用户的上下文键,不支持新的twitter API,而且它似乎与facebookWell有问题。XMLHttpRequest错误表示您从中请求的域与向其发送请求的域不同。
XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/auth?client_id=xxx-xxx…ails.read+https%3A%2F%2Fwww.google.com%2Fm8%2Ffeeds%2F&access_type=offline. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.domain.com' is therefore not allowed access.