क्रॉस-साइट स्क्रिप्टिंग समस्याएँ
आप डोमेन के बीच WP कॉन्ट्रैक्ट कुकीज़ को स्थानांतरित नहीं कर सकते। आप प्रोग्रामेटिक रूप से दूसरे WP इंस्टॉलेशन में लॉग इन करने के लिए प्लेनटेक्स्ट पासवर्ड स्टोर नहीं करना चाहते हैं। इसलिए, आपको उपयोगकर्ताओं को वर्डप्रेस में लॉग इन करना होगा, और फिर तीसरे पक्ष की साइट से एपीआई एंडपॉइंट के माध्यम से उनकी लॉगिन स्थिति का उपयोग करना होगा। यह वर्डप्रेस को सभी प्रमाणीकरण को संभालने देता है। यह बहुत सुरक्षित है क्योंकि उपयोगकर्ता को एपीआई एंडपॉइंट के लिए तीसरे पक्ष के डेटा की सेवा करने के लिए शारीरिक रूप से WP की ओर लॉगिन करना होगा।
एक एपीआई एंडपॉइंट बनाएं
इस लेख को देखें जो मैंने अभी यहाँ लिखा है: http://coderrr.com/create-an-api-endpoint-in-wordpress/
इसके अलावा, आप यहां कोड प्रदर्शन देख सकते हैं: https://gist.github.com/2982319
आपको अपने स्वयं के ऐप की ज़रूरतों के लिए तर्क का पता लगाना होगा, लेकिन यह आपको एक समापन बिंदु बनाने की अनुमति देगा जहां आप वर्डप्रेस की ओर से अपनी इच्छानुसार कुछ भी सेवा कर सकते हैं।
चूंकि आप वर्डप्रेस को प्रमाणीकरण साइट के रूप में उपयोग कर रहे हैं, इसलिए आप is_user_logged_in () जैसे चेक का उपयोग कर सकते हैं। यदि वे लॉग इन हैं, तो किसी भी जानकारी के साथ किसी उपयोगकर्ता वस्तु को तीसरे पक्ष को लौटा दें, जिसकी उन्हें आवश्यकता है।
थर्ड-पार्टी से लॉग इन करना
तृतीय-पक्ष से, वे आपके अप्रत्यक्ष अनुभव के लिए redirect_to क्वेरी संस्करण का उपयोग करके आपके लॉगिन पृष्ठ से लिंक कर सकते हैं। एक बार लॉग इन करने के बाद, यह उन्हें तीसरे पक्ष की साइट पर वापस भेज देगा।
http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com
रिमोट लॉगिन
यदि आपको तृतीय-पक्ष साइट से उपयोगकर्ताओं को वर्डप्रेस में लॉगिन करने की आवश्यकता है, तो आप इस साइट पर सूचीबद्ध कुछ सरल WP फ़ंक्शन का उपयोग कर सकते हैं: http://kuttler.eu/code/log-in-a-wordpress-user-programmatically/
आपको निश्चित रूप से एक साझा रहस्य का उपयोग करने और चीजों को सुरक्षित रखने के लिए उस रहस्य से समय आधारित हैश बनाने की आवश्यकता होगी। मूल रूप से, यहाँ यह कैसा दिखेगा:
तृतीय पक्ष एक टाइमस्टैम्प और एक साझा रहस्य द्वारा उत्पन्न टोकन के साथ अनुरोध भेजता है:
$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!