Masalah Skrip Lintas Situs
Anda tidak dapat mentransfer cookie autentik WP antar domain. Anda juga tidak ingin menyimpan kata sandi plaintext untuk masuk ke instalasi WP lain secara terprogram. Jadi, Anda harus meminta pengguna masuk ke WordPress, dan kemudian mengakses status login mereka melalui titik akhir API dari situs pihak ketiga. Ini memungkinkan WordPress menangani semua otentikasi. Ini cukup aman karena pengguna harus masuk secara fisik ke sisi WP agar titik akhir API untuk menyajikan data kepada pihak ketiga.
Buat Titik Akhir API
Lihat artikel ini yang baru saja saya tulis di sini: http://coderrr.com/create-an-api-endpoint-in-wordpress/
Anda juga dapat melihat demonstrasi kode di sini: https://gist.github.com/2982319
Anda harus mencari tahu logika untuk kebutuhan aplikasi Anda sendiri, tetapi ini akan memungkinkan Anda untuk membuat titik akhir di mana Anda dapat melayani apa pun yang Anda inginkan dari sisi WordPress.
Karena Anda menggunakan WordPress sebagai situs otentikasi, Anda dapat menggunakan tanda centang seperti is_user_logged_in (). Jika mereka masuk, kembalikan objek pengguna ke pihak ketiga dengan informasi apa pun yang mereka butuhkan.
Masuk Dari Pihak Ketiga
Dari pihak ketiga, mereka dapat menautkan ke halaman login Anda untuk pengalaman yang mulus menggunakan redirect_to kueri var. Setelah masuk, itu akan mengembalikan mereka ke situs pihak ketiga.
http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com
Login Jauh
Jika Anda perlu login pengguna ke WordPress dari situs pihak ketiga, Anda dapat menggunakan beberapa fungsi WP sederhana yang tercantum di situs ini: http://kuttler.eu/code/log-in-a-wordpress-user-programmatically/
Anda pasti harus menggunakan rahasia bersama dan membuat hash berdasarkan rahasia itu untuk menjaga keamanan. Pada dasarnya, inilah yang akan terlihat:
Pihak ketiga mengirimkan permintaan dengan cap waktu dan token yang dihasilkan oleh rahasia bersama:
$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);
Instalasi WordPress menerima permintaan:
$shared_secret = 'foobar';
$timestamp = esc_attr($_GET['timestamp']);
if((time() - $timestamp) > 30) # Threshold is 30 seconds
//do something here - TOKEN expired!
$token = md5($share_secret.$timestamp);
$token_to_check = esc_attr($_GET);
if($token == $token_to_check)
//authenticated!