2017-10-26 14 views
0

サイトA(ワードプレス)からサイトB(ワードプレス)にユーザーオブジェクトを送信しています。ここでサイトBがユーザーデータを受け入れると、ユーザーはサイトBにログインする必要があります。php curl requestで別のWordPressサイトにログインすることができません

ユーザーはサイトBにログインしていますが、is_user_logged_in()とwp_get_currect_userを使用してチェックしました。この時点ではまだURLはsiteA/wp-admin/admin-postと表示されています。しかしその後、私はサイトBにリダイレクトする必要があり、ユーザーはログインする必要があります。これは私が失敗する部分です。 javascriptのハックを使用してサイトBにリダイレクトしても、リダイレクトは機能しますが、ユーザーはログインしていません。 私のカールの要求を確認してください。

サイトA

$opts = array(

     CURLOPT_CONNECTTIMEOUT => 10, 
     CURLOPT_RETURNTRANSFER => false, 
     CURLOPT_TIMEOUT => 60, 
     CURLOPT_USERAGENT => 'from-site-a', 
     CURLOPT_SSL_VERIFYPEER => False, 
     CURLOPT_HTTPHEADER => array('Accept: application/json'), 
     CURLOPT_POST => 1, 
     // CURLOPT_HEADER => false, 
     CURLOPT_FOLLOWLOCATION => true, 
     CURLOPT_POSTFIELDS => http_build_query($user), 
     CURLOPT_URL => $url 
    ); 

    $ch = curl_init(); 

    curl_setopt_array($ch, $opts); 

    $result = curl_exec($ch); 

サイトB

$user = $_POST; 

    $a = get_user_by('login', $user['data']['user_login']); 

    wp_set_current_user($a->data->ID); 
    wp_set_auth_cookie($a->data->ID); 
    do_action('wp_login', $a->data->user_login, $a); 

    //wp_get_current_user(); 



    $string = '<script type="text/javascript">'; 
    $string .= 'window.location = "' . site_url() . '"'; 
    $string .= '</script>'; 

    echo $string; 
    exit; 

答えて

0

あなたは代わりのJavaScriptのPHPのリダイレクトをしようとする必要があります。私はあなたがJSスクリプトの間違った場所でこのスクリプトを使用していると思います。したがって、これを試してください

$user = $_POST; 
$a = get_user_by('login', $user['data']['user_login']); 
wp_set_current_user($a->data->ID); 
wp_set_auth_cookie($a->data->ID); 
do_action('wp_login', $a->data->user_login, $a); 

header("location: ".site_url()); 
exit; 

しかし、私はこのいずれかが動作しない可能性があります恐れています。 現在のWebサイトがAの場合は、B側ではなくリダイレ​​クトスクリプトを実行する必要があります。 例えば、サイドAがそう

$opts = array(
     CURLOPT_CONNECTTIMEOUT => 10, 
     CURLOPT_RETURNTRANSFER => false, 
     CURLOPT_TIMEOUT => 60, 
     CURLOPT_USERAGENT => 'from-site-a', 
     CURLOPT_SSL_VERIFYPEER => False, 
     CURLOPT_HTTPHEADER => array('Accept: application/json'), 
     CURLOPT_POST => 1, 
     // CURLOPT_HEADER => false, 
     CURLOPT_FOLLOWLOCATION => true, 
     CURLOPT_POSTFIELDS => http_build_query($user), 
     CURLOPT_URL => $url 
    ); 

    $ch = curl_init(); 
    curl_setopt_array($ch, $opts); 
    $result = curl_exec($ch); 
    header("location:".$result); 

及び側面ので

$user = $_POST; 
$a = get_user_by('login', $user['data']['user_login']); 
wp_set_current_user($a->data->ID); 
wp_set_auth_cookie($a->data->ID); 
do_action('wp_login', $a->data->user_login, $a); 
echo site_url(); 
なければならないことであるべきです
関連する問題