wp_set_auth_cookie () no funciona en la llamada Ajax

Pregunta:

Estoy intentando crear una función de inicio de sesión automático basada en Facebook JS-SDK. Cuando el usuario está "Conectado" pasando FbID y otros datos de usuario a una función ajax que crea la cookie de sesión. Se crea una cookie (puedo ver "wordpress_logged_in_.... cookie" en el inspector del navegador) pero cuando recargo la página, el usuario todavía está desconectado.

¿Tienes idea de por qué?

JavaScript

function ajaxloginFB(uid,email,first_name,last_name) {
    data =  "uid=" + uid + "&" + "name=" + last_name + " " + first_name + "&" + "email=" + email + "&" + $.param({ action: 'facebook_login', nonce: ajax_object.ajaxnonce });
    $.ajax({
        url : ajax_object.ajaxurl,
        type: "post",
        data : data,
        success:function(response){
            var response = $.parseJSON(response);
            if (response.success == true){
                window.location.reload();
            }
        }
    });
}

PHP

add_action( 'wp_ajax_facebook_login', 'facebook_ajax_login_or_register' );
add_action( 'wp_ajax_nopriv_facebook_login', 'facebook_ajax_login_or_register' );

function facebook_ajax_login_or_register(){
  $uid = sanitize_text_field( $_POST['uid'] );
  $args = array(
    'meta_key'     => 'fbuid',
    'meta_value'   => $uid,
    'meta_compare' => '=',
  );
  $fb_user = get_users($args);
  $current_user_id = $fb_user[0];
  wp_set_auth_cookie( $current_user_id, true );
  $response[success] = true;
  echo json_encode($response);
  die();
}

Respuesta:

Agrego una función wp_set_current_user para configurar el usuario actual.

add_action( 'wp_ajax_facebook_login', 'facebook_ajax_login_or_register' );
add_action( 'wp_ajax_nopriv_facebook_login', 'facebook_ajax_login_or_register' );

function facebook_ajax_login_or_register(){
  $uid = sanitize_text_field( $_POST['uid'] );
  $args = array(
    'meta_key'     => 'fbuid',
    'meta_value'   => $uid,
    'meta_compare' => '=',
  );
  $fb_user = get_users($args);
  $current_user_id = $fb_user[0];
  wp_set_current_user($current_user_id);//Set current user
  wp_set_auth_cookie( $current_user_id, true );
  $response[success] = true;
  echo json_encode($response);
  die();
}

No he probado esto, así que avíseme si todavía tiene el mismo problema.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım