Как реализовать HybridAuth VIA AJAX-вызов?

Я пытаюсь настроить единый вход для сайта modx & решил попробовать сделать это с помощью HybridAuth и Ajax, хотя я получаю сообщение об ошибке, не знаю, как с этим справиться, вот что у меня есть:

Набор кнопок для вызова jQuery:

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

JQuery:

$(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;

Так что на самом деле он еще не создает сеанс modx, он будет аутентифицироваться, если вызывается без использования ajax, но как только я добавлю часть ajax, я получу консольную ошибку:

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.

что кажется довольно простым, что-то [ajax?] где-то добавило заголовок [а не вторую последнюю строку процессора, которая добавляется после ошибки]. Что может быть добавление заголовка & как я могу исправить?

1

Решение

Поскольку аутентификация требует перенаправления пользователя к провайдеру, она не будет работать с вызовами AJAX. Бэкэнд-скрипт умрет () в функции Redirect. Заголовок, который вы видите, вероятно, является заголовком перенаправления.

Для альтернативного решения, проверьте этот подход: https://stackoverflow.com/a/29891358/1816603

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]