Проблеми між сценарієм сценаріїв
Ви не можете передавати файли cookie WP для авторів між доменами. Ви також не хочете програмно зберігати паролі простого тексту для входу в іншу інсталяцію WP. Отже, вам доведеться змусити користувачів увійти в WordPress, а потім отримати доступ до їх статусу входу через кінцеву точку API з сторонніх сайтів. Це дозволяє WordPress обробляти всю аутентифікацію. Це досить безпечно, оскільки користувачеві доведеться фізично увійти на сторону WP, щоб кінцева точка API могла подавати дані сторонній стороні.
Створіть кінцеву точку API
Перегляньте цю статтю, яку я написав тут: http://coderrr.com/create-an-api-endpoint-in-wordpress/
Також ви можете побачити демонстрацію коду тут: https://gist.github.com/2982319
Вам доведеться з’ясувати логіку для власних потреб у додатку, але це дозволить створити кінцеву точку, де ви зможете подавати все, що завгодно, зі сторони WordPress.
Оскільки ви використовуєте WordPress як сайт аутентифікації, ви можете використовувати чек, як is_user_logged_in (). Якщо вони ввійшли, поверніть об’єкт користувача третій стороні з будь-якою інформацією, яка їм потрібна.
Вхід із сторонньої сторони
З боку третьої сторони вони можуть зв’язатись із вашою сторінкою входу для отримання безперервного досвіду, використовуючи змінний запит redirect_to. Після входу він поверне їх на сторонній сайт.
http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com
Віддалені входи
Якщо вам потрібно ввійти користувачів у WordPress із стороннього сайту, ви можете використовувати кілька простих функцій WP, перелічених на цьому веб-сайті: http://kuttler.eu/code/log-in-a-wordpress-user-programmatic/
Вам, безумовно, потрібно використовувати спільну таємницю та створювати хеши, що базуються на часі, щоб захистити речі. В основному, ось як це виглядатиме:
Третя сторона надсилає запит із позначкою часу та маркером, створеними спільною таємницею:
$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);
Встановлення WordPress отримує запит:
$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!