CURL कमांड के माध्यम से REST API के साथ OAuth प्रमाणीकरण का उपयोग कैसे करें?


18

मैं एपीआई से अधिक डेटा प्राप्त करने के लिए प्रमाणीकरण के साथ वर्डप्रेस रेस्ट एप का उपयोग करने की कोशिश कर रहा हूं। मैंने Oauth प्लगइन, बाकी-एपीआई प्लगइन और WP-CLI से एपीआई क्रेडेंशियल स्थापित किए हैं।

मुझे पता चला है कि प्राधिकरण के बिना डेटा का उपयोग कैसे करें। यह काम:

// set our end point
$domain = "http://localhost/wp-api";
$endpoint = $domain."/wp-json/wp/v2/posts/";


$curl = curl_init($endpoint);

curl_setopt_array($curl, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_URL            => $endpoint,
]);
$response = curl_exec($curl);
$decoderesponse = json_decode($response, true);

?>

<pre>
  <?php print_r($decoderesponse); ?>
</pre>

लेकिन मैं यह नहीं पता लगा सकता कि प्रमाणिकता के साथ कैसे प्रमाणित किया जाए। यहाँ मेरा प्रयास है। मुझे यकीन नहीं है कि "कुंजी" और "गुप्त" सही हैं।

// Oauth credentials from wp-cli
$ID = "4";
$Key = "l8XZD9lX89kb";
$Secret = "UUbcc8vjUkGjuDyvK1gRTts9sZp2N8k9tbIQaGjZ6SNOyR4d";

// set our end point
$domain = "http://localhost/wp-api";
$endpoint = $domain."/wp-json/wp/v2/posts/1/revisions";

$headers[] = "key=$Key";
$headers[] = "secret=$Secret";

$curl = curl_init($endpoint);

curl_setopt_array($curl, [
  CURLOPT_HTTPHEADER     => $headers,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_URL            => $endpoint,
]);
$response = curl_exec($curl);
$decoderesponse = json_decode($response, true);

?>

<pre>
  <?php print_r($decoderesponse); ?>
</pre>

आउटपुट है

Array
(
    [code] => rest_cannot_read
    [message] => Sorry, you cannot view revisions of this post.
    [data] => Array
        (
            [status] => 401
        )
)

में इससे कैसे चला सकता हूँ? धन्यवाद।


2
चीजें इतनी आसान नहीं हैं। मैं एक उत्तर लिखने की कोशिश कर रहा हूं, लेकिन यह काफी लंबा है। आप डॉक्स, विशेष रूप से प्राधिकरण प्रवाह को पढ़कर शुरू कर सकते हैं । इस पोस्ट में एक महान ट्यूटोरियल भी है ।
साइबरमेट

जवाबों:


10

यहां कदम से कदम मिलाते हैं। ऐसा लगता है कि आप OAuth को प्रमाणीकरण के लिए उपयोग करने का प्रयास कर रहे हैं, लेकिन ऐसा करने से पहले आपको एक्सेस टोकन प्राप्त करने की आवश्यकता होती है जो आपके एपीआई कॉल करते समय प्रमाणित करने के लिए उपयोग किया जाएगा।

क्योंकि यह OAuth संस्करण 1 का उपयोग कर रहा है, एक्सेस टोकन प्राप्त करने के लिए आपको निम्नलिखित कार्य करने होंगे:

  1. सबसे पहले, एक एप्लिकेशन सेटअप करें, आवेदन के लिए क्लाइंट आईडी और सीक्रेट का उपयोग करके अनुरोध टोकन (अस्थायी क्रेडेंशियल्स) प्राप्त करने के लिए साइट पर कॉल करें।
  2. दूसरा, पहले चरण (उपयोगकर्ता-सामना करना, नीचे देखें) से अनुरोध टोकन के साथ आवेदन को अधिकृत करने के लिए साइट पर कॉल करें ।
  3. तीसरा, प्राधिकरण पूरा हो जाने के बाद, आप तब एक्सेस टोकन प्राप्त करने के लिए साइट पर कॉल करते हैं (अब उस एप्लिकेशन को अधिकृत किया गया है)

मैं पहले कुछ चरणों के लिए पोस्टमैन का उपयोग करने की सलाह देता हूं, क्योंकि उन्हें केवल एक बार पूरा करने की आवश्यकता है। पोस्टमैन भी timestamp, nonceऔर oauth signature, इसलिए यदि आप एक OAuth पुस्तकालय का उपयोग नहीं कर रहे हैं, तो आप पोस्टमैन का उपयोग करना चाहिए। एक बार आपके पास अपना एक्सेस टोकन होने के बाद आप बिना किसी लाइब्रेरी के CURL के जरिए कॉल कर सकते हैं।

https://www.getpostman.com/

पहला चरण (सेटअप अनुप्रयोग)

WP OAuth 1 प्लगइन स्थापित करें, सक्रिय करें, फिर उपयोगकर्ता> एप्लिकेशन के तहत गोटो मेनू आइटम । नया एप्लिकेशन जोड़ें, नाम और विवरण भरें। कॉलबैक के लिए या तो उपयोगकर्ता को (प्राधिकृत करने के बाद), या oopआउट-ऑफ-बैंड प्रवाह को पुनर्निर्देशित करने के लिए URL जो आंतरिक पृष्ठ पर रीडायरेक्ट करेगा जो सत्यापनकर्ता टोकन प्रदर्शित करता है (रीडायरेक्ट करने के बजाय)।

https://github.com/WP-API/OAuth1/blob/master/docs/basics/Registering.md

दूसरे चरण में आगे बढ़ने के लिए, आपकी साइट पर कॉल करने की आवश्यकता होती है, जो बनाए गए एप्लिकेशन से क्लाइंट आईडी और क्लाइंट सीक्रेट का उपयोग करके अस्थायी क्रेडेंशियल प्राप्त करने के लिए (अनुरोध टोकन)।

Postman को खोलें, एक नया कॉल बनाएं http://website.com/oauth1/request, प्राधिकरण टैब पर क्लिक करें, ड्रॉपडाउन से OAuth 1.0 का चयन करें, क्लाइंट कुंजी, क्लाइंट सीक्रेट में प्रवेश करें, हस्ताक्षर विधि सेट करें HMAC-SHA1, शीर्ष लेख में पैरामेट्स जोड़ें, oauth हस्ताक्षर एनकोड करें, फिर अपडेट अनुरोध पर क्लिक करें

डाकिया OAuth1 अनुरोध

पोस्टमैन आपके लिए हस्ताक्षर, नॉन और टाइमस्टैम्प उत्पन्न करेगा और उन्हें हेडर में जोड़ देगा (आप हेडर टैब के तहत देख सकते हैं)।

भेजें पर क्लिक करें और आपको एक प्रतिक्रिया मिलनी चाहिए जिसमें शामिल हैं oauth_tokenऔर oauth_token_secret: डाकिया OAuth1 अनुरोध प्रतिक्रिया

ये मूल्य आपके वर्डप्रेस उपयोगकर्ता खाते के तहत आवेदन को अधिकृत करने के लिए अगले चरण में उपयोग किए जाएंगे।

दूसरा चरण (आवेदन को अधिकृत करें)

प्राधिकरण चरण को केवल एक बार पूरा करने की आवश्यकता है, यह चरण उपयोगकर्ता का सामना करना पड़ रहा है, और वह जिसे हर कोई परिचित है। यह चरण आवश्यक है क्योंकि आप OAuth1 का उपयोग कर रहे हैं, और एप्लिकेशन को एक वर्डप्रेस उपयोगकर्ता खाते से जुड़ा होना चाहिए। जब कोई साइट आपको फेसबुक के साथ लॉगिन करने की अनुमति देती है तो सोचें ... वे आपको फेसबुक पर निर्देशित करते हैं जहां आप लॉगिन करते हैं और "अधिकृत करें" पर क्लिक करते हैं ... यह केवल आपके वर्डप्रेस साइट के माध्यम से करने की आवश्यकता है।

मैं इस कदम के लिए आपके वेब ब्राउज़र का उपयोग करने की सलाह देता हूं, क्योंकि आप आसानी से केवल URL में चर सेट कर सकते हैं, और यह एप्लिकेशन को अधिकृत करने के लिए "अधिकृत" पृष्ठ प्रदान करता है।

अपना वेब ब्राउज़र खोलें और URL को अपनी साइट पर टाइप करें, जैसे: http://website.com/oauth1/authorize

अब इस URL पर जोड़ें, oauth_consumer_key(क्लाइंट आईडी), oauth_tokenऔर oauth_token_secret(पिछले चरण से)। मेरे उदाहरण में यह पूर्ण URL है:

http://website.com/oauth1/authorize?oauth_consumer_key=TUPFNj1ZTd8u&oauth_token=J98cN81p01aqSdFd9rjkHZWI&oauth_token_secret=RkrMhw8YzXQljyh99BrNHmP7phryUvZgVObpmJtos3QExG1O

OAuth1 अधिकृत अनुप्रयोग

एक बार जब आप प्राधिकरण पर क्लिक करते हैं, तो आपको सत्यापन टोकन के साथ एक और स्क्रीन मिलेगी। मेरे उदाहरण में यह सत्यापन टोकन लौटाया गया हैE0JnxjjYxc32fMr2AF0uWsZm

तीसरा चरण (पहुंच टोकन प्राप्त करें)

अब जब हमने एप्लिकेशन को अधिकृत कर लिया है, तो हमें प्राधिकरण टोकन प्राप्त करने के लिए एक अंतिम कॉल करने की आवश्यकता है जिसका उपयोग आपके सभी एपीआई कॉल करने के लिए किया जाएगा। पोस्टमैन का उपयोग करने जा रहे पहले चरण की तरह (क्योंकि हस्ताक्षर HMAC-SHA1 होना आवश्यक है), और यह इन चरणों को पूरा करना 100 गुना आसान बनाता है।

पोस्टमैन को फिर से खोलें, और URL को बदल दें http://website.com/oauth1/access

टोकन, और टोकन सीक्रेट (पहले चरण से मान) जोड़ना सुनिश्चित करें, फिर URL के नीचे दिए गए बॉक्स दिखाने के लिए Params पर क्लिक करें। Oauth_verifier में बाएं प्रकार पर और दाईं ओर, दूसरे चरण से कोड दर्ज करें, सत्यापन टोकन

पोस्टमैन OAuth1 एक्सेस स्टेप

अपडेट अनुरोध पर क्लिक करना सुनिश्चित करें, फिर भेजें पर क्लिक करें, और आपको एक प्रतिक्रिया वापस मिलनी चाहिए oauth_tokenऔर oauth_token_secret... यह वही है जिसे आपको अपने एपीआई कॉल के साथ बनाने की आवश्यकता है! चरण 1 से मूल लोगों को छोड़ दें, इन लोगों को अपने कोड में या कहीं और सुरक्षित बचाएं।

पोस्टमैन OAuth1 एक्सेस रिस्पांस

फिर आप अपनी साइट पर एक एपीआई कॉल कर सकते हैं, हेडर को लौटाए गए टोकन और टोकन गुप्त के साथ सेट कर सकते हैं।

जीईटी मापदंडों में, या POST (यदि आवेदन / x-www-form-urlencoded के रूप में एन्कोडेड) के माध्यम से आप इसे कई तरीके से पारित कर सकते हैं। ध्यान रखें कि आप हस्ताक्षर, टाइमस्टैम्प और नॉन पास अवश्य करें। मुझे नहीं पता था कि यह उत्तर मुझे कितना समय लगेगा, इसलिए मैं इसे कल आपके कोड के साथ ऐसा करने पर उदाहरण के साथ अपडेट करूंगा।

मैं रेस्ट एपीआई लॉग को स्थापित करने की दृढ़ता से सलाह देता हूं ताकि आप एपीआई कॉल के लॉग को देख सकें, और देखें कि क्या भेजा गया, लौटाया गया, आदि यह बड़े पैमाने पर डिबेटिंग के साथ मदद करेगा।

https://github.com/petenelson/wp-rest-api-log


मुझे पता है, पोस्टमैन या इसी तरह के टूल के साथ कई ट्यूटोरियल हैं, लेकिन मुझे कोई ट्यूटोरियल नहीं मिल रहा है, जो CURL फंक्शंस के साथ पूरी प्रक्रिया को करने के लिए है, मेरा मतलब है कि शुद्ध PHP कोड। मैं यही चाहता था।
मिन्ट्री

@ Dan9 टीबीएच वास्तव में संभव नहीं है ... कम से कम OAuth1 के साथ नहीं, मुख्य रूप से क्योंकि आपको उपयोगकर्ता खाते के तहत एप्लिकेशन को स्वचालित करना होगा। अन्य सभी चरणों को CURL के साथ करना आसान है, समस्या वर्डप्रेस उपयोगकर्ता के रूप में लॉगिन करने के लिए CURL का उपयोग कर रही है (जिसका अर्थ है कि आपको अपनी PHP फ़ाइल में क्रेडेंशियल संग्रहीत करने की आवश्यकता है जो एक अच्छा विचार नहीं है), और आवेदन को अधिकृत करने के लिए, जिसे आप OAuth1 कोडबेस को संशोधित कर सकता है, लेकिन ईमानदारी से अगर आप EVERYTHING करने के लिए CURL का उपयोग करना चाहते हैं ... आप इस गलत तरीके के बारे में सोच रहे हैं, और इसे किसी अन्य समाधान या विधि के साथ आना चाहिए।
sMyles

@ Dan9 आप क्या करने की कोशिश कर रहे हैं, आपको OAuth1 के बजाय OAuth2 सर्वर का उपयोग करना चाहिए, मुख्य रूप से इस तथ्य के कारण कि OAuth2 में क्लाइंट क्रेडेंशियल अनुदान प्रकार सहित नई सुविधाएँ हैं, जो इन सभी चरणों से गुजरने से बचती है। bhffer.github.io / oauth2- सर्वर-php-डॉक्स / अनुदान-प्रकार /…
शैलियाँ

@ Dan9 यदि आप 100% OAuth1 के माध्यम से मदद पाने पर सेट हैं, तो CURL का उपयोग करके, मुझे लगता है कि यह कुछ कोड हैक के साथ संभव है, लेकिन जैसा कि मैंने उल्लेख किया है, इसका मतलब है कि आपको उपयोगकर्ता का USERNAME और PASSWORD बचाना होगा PHP फ़ाइल के लिए। यदि आप इसके साथ ठीक हैं, तो मुझे बताएं और बीमार इसे CURL का उपयोग करने के लिए एक ट्यूटोरियल लिखें, यदि आप OAuth2 के साथ जाने जा रहे हैं या इसे अब और आवश्यकता नहीं है, तो समय लेखन ट्यूटोरियल खर्च नहीं करना चाहते हैं
sMyles सिप

@ Dan9 अच्छी तरह से ... यह सिर्फ इतना है ... यदि आप OAuth1 का उपयोग करने जा रहे हैं, तो आपको एक वर्डप्रेस उपयोगकर्ता खाते को जोड़ना होगा। मूल रूप से एक्सेस टोकन को एक एपीआई कुंजी की तरह समझें ... "एपीआई कुंजी" को एक उपयोगकर्ता खाते से संबद्ध होना होगा ... अब चाहे आप कुछ मानक खाते का उपयोग करें जो आप सेटअप करते हैं, आपके ऊपर है .. लेकिन इसकी परवाह किए बिना OAuth1 का उपयोग करते समय एक उपयोगकर्ता खाते से जुड़ा होना चाहिए, इसलिए एक्सेस टोकन प्राप्त करने की लंबी प्रक्रिया।
15

2

एक और उत्तर के रूप में जोड़कर आपको यह पता लगाने में मदद मिलेगी कि यह कैसे करना है। मूल रूप से मेरी टिप्पणियों में उल्लिखित है यदि आप OAuth1 का उपयोग करने जा रहे हैं, तो आपको इसे उपयोगकर्ता खाते के साथ जोड़ना होगा, इसके अलावा कोई रास्ता नहीं।

सबसे पहले आपको वर्डप्रेस के लिए उपयोगकर्ता नाम पासवर्ड के साथ साइट पर लॉगिन करने के लिए CURL का उपयोग करने की आवश्यकता है, कुकी को स्टोर करें ताकि आप इसे अपने CURL कॉल में OAuth पर उपयोग कर सकें (कुकी को शामिल करने के लिए अपने CURL कॉल को अपडेट करना सुनिश्चित करें):

/programming/724107/wordpress-autologin-using-curl-or-fsockopen-in-php

अस्थायी Oauth टोकन और गुप्त (अनुरोध टोकन) प्राप्त करने के लिए क्लाइंट ID और क्लाइंट सीक्रेट के साथ CURL का उपयोग करके OAuth पर कॉल करें

इस कॉल को करने के लिए (और एक्सेस टोकन प्राप्त करने के लिए कॉल), आपको अपने CURL कॉल को सही तरीके से सेटअप करने की आवश्यकता है। कोड और संदर्भों के लिए इस उत्तर का अंत देखें।

अस्थायी ओउथ टोकन और गुप्त (अनुरोध टोकन) प्राप्त करने के बाद, अपनी साइट के इस URL पर CURL POST कॉल करें:

http://website.com/oauth1/authorize

फिर आपको प्राधिकरण पृष्ठ के लिए दिए गए HTML से सभी मानों को खींचने की आवश्यकता होगी, और फिर अपने खुद के POST को फॉर्म एक्शन URL में सबमिट करें।

/programming/35363815/how-to-get-a-value-input-from-html-returned-of-curl

विशेष रूप से ये "प्राधिकरण" POSTing को पूरा करने के लिए अपने POST डेटा में शामिल किए जाने की आवश्यकता है http://domain.com/wp-login.php?action=oauth1_authorize

  • _wpnonce - यह सबमिट किए जाने वाले फॉर्म के लिए नॉन वैल्यू है, इस MUST को HTML इनपुट से खींचकर अपने POST के साथ सबमिट किया जाना चाहिए

    consumer - यह HTML में एक छिपा हुआ इनपुट है (यह एक पोस्ट आईडी का संदर्भ है इसलिए आपको इसे HTML इनपुट से खींचना होगा

    oauth_token - यह HTML में एक छिपा हुआ इनपुट है (लेकिन आपको यह पहले से ही होना चाहिए)

    wp-submit - इसके लिए मूल्य निर्धारित करना होगा authorize

प्रमाणीकरण पृष्ठ के लिए यहां उदाहरण HTML निर्मित है:

<form name="oauth1_authorize_form" id="oauth1_authorize_form" action="http://website.com/wp-login.php?action=oauth1_authorize" method="post">

    <h2 class="login-title">Connect My Auth</h2>

    <div class="login-info">
        <p>Howdy <strong>admin</strong>,<br/> "My OAuth Demo" would like to connect to Example Site.</p>

    </div>

    <input type="hidden" name="consumer" value="5428" /><input type="hidden" name="oauth_token" value="i1scugFXyPENniCP4kABKtGb" /><input type="hidden" id="_wpnonce" name="_wpnonce" value="ca9b267b4f" /><input type="hidden" name="_wp_http_referer" value="/wp-login.php?action=oauth1_authorize&amp;oauth_consumer_key=TUPFNj1ZTd8u&amp;oauth_token=i1scugFXyPENniCP4kABKtGb&amp;oauth_token_secret=gzqW47pHG0tilFm9WT7lUgLoqN2YqS6tFFjUEiQoMgcmG2ic" />   <p class="submit">
        <button type="submit" name="wp-submit" value="authorize" class="button button-primary button-large">Authorize</button>
        <button type="submit" name="wp-submit" value="cancel" class="button button-large">Cancel</button>
    </p>

</form>

उन सभी मूल्यों / डेटा के साथ POST करने के बाद, यह HTML है जिसे प्राधिकरण कोड के साथ लौटाया जाएगा (इसलिए आपको <code>ब्लॉक के अंदर से मान खींचने की आवश्यकता है :

<div id="login">
    <h1><a href="https://wordpress.org/" title="Powered by WordPress" tabindex="-1">Example Site</a></h1>
    <p>Your verification token is <code>yGOYFpyawe8iZmmcizqVIw3f</code></p> <p id="backtoblog"><a href="http://website.com/">&larr; Back to Example Site</a></p>
</div>

एक बार जब आपके पास सत्यापन टोकन होगा, तब आप /oauth1/accessसत्यापन टोकन, ओहूत टोकन, और ऊथ टोकन टोकन का उपयोग करके कॉल कर सकते हैं । सत्यापन टोकन को POST डेटा में डालने की आवश्यकता हैoauth_verifier

यह आपके नए और स्थायी एक्सेस टोकन, और VOILA को लौटा देगा!

उदाहरण CURL कोड

CURL कॉल करने के लिए उदाहरण कोड नीचे दिया गया है, जो सबसे महत्वपूर्ण हिस्सा है कि यह कैसे oauth_signatureउत्पन्न होता है:

https://oauth1.wp-api.org/docs/basics/Signing.html

function buildBaseString($baseURI, $method, $params){
    $r = array();
    ksort($params);
    foreach($params as $key=>$value){
        $r[] = "$key=" . rawurlencode($value);
    }

    return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
}

function buildAuthorizationHeader($oauth){
    $r = 'Authorization: OAuth ';
    $values = array();
    foreach($oauth as $key=>$value)
        $values[] = "$key=\"" . rawurlencode($value) . "\"";

    $r .= implode(', ', $values);
    return $r;
}

// Add request, authorize, etc to end of URL based on what call you're making
$url = "http://domain.com/oauth/";

$consumer_key = "CLIENT ID HERE";
$consumer_secret = "CLIENT SECRET HERE";

$oauth = array( 'oauth_consumer_key' => $consumer_key,
                'oauth_nonce' => time(),
                'oauth_signature_method' => 'HMAC-SHA1',
                'oauth_callback' => 'oob',
                'oauth_timestamp' => time(),
                'oauth_version' => '1.0');

$base_info = buildBaseString($url, 'GET', $oauth);
$composite_key = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
$oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
$oauth['oauth_signature'] = $oauth_signature;


$header = array(buildAuthorizationHeader($oauth), 'Expect:');
$options = array( CURLOPT_HTTPHEADER => $header,
                  CURLOPT_HEADER => false,
                  CURLOPT_URL => $url,
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_SSL_VERIFYPEER => false);

$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);

$return_data = json_decode($json);

print_r($return_data);

यह साइट ठीक बताती है कि OAuth हस्ताक्षर को कैसे एनकोड करना है, और CURL का उपयोग करके कैसे भेजें (मैं पूरे पृष्ठ को पढ़ने की सलाह देता हूं): https://hannah.wf/twitter-oauth-simple-curl-requests-for-your-own- डेटा/

OAuth1 हस्ताक्षर बनाने पर अधिक संसाधन: /programming/24613277/oauth-signature-generation-use-hmac-sha1

अन्य संसाधन: http://collaboradev.com/2011/04/01/twitter-oauth-php-tutorial/


मैं क्लाइंट आईडी और ग्राहक का रहस्य कैसे प्राप्त कर सकता हूं और इसे वैध उपयोगकर्ता के साथ जोड़ सकता हूं? वर्तमान में, केवल व्यवस्थापक ही एक नया ऐप बना सकते हैं और यह केवल व्यवस्थापक डैशबोर्ड के माध्यम से होता है। Btw, मैंने oauth_signatureआपके द्वारा बताए अनुसार उत्पन्न करने की कोशिश की है , लेकिन किसी भी तरह, प्रतिक्रिया हमेशा होती है json_oauth1_signature_mismatch
मिन्ट्री

@ Dan9 हाँ जो सही है, व्यवस्थापक को ऐप बनाना होगा, अन्यथा यह एक बड़ा सुरक्षा मुद्दा होगा, जिससे अनाम उपयोगकर्ताओं द्वारा ऐप बनाए जा सकेंगे। यहाँ पर हस्ताक्षर के बारे में कुछ साइटें हैं। wordpress.stackexchange.com/questions/185511/… github.com/WP-API/OAuth1/issues/34 github.com/WP-API/OAuth1-issues/27
sMyles

0

अपडेट: मैंने जो पढ़ा है, उससे आपको access_token प्राप्त करने के लिए कई कर्ल करने की आवश्यकता है, जिसे आप क्वेरी करने के लिए उपयोग करते हैं

  • अस्थायी क्रेडेंशियल अधिग्रहण: क्लाइंट को सर्वर से अस्थायी क्रेडेंशियल्स का एक सेट मिलता है।
  • प्राधिकरण: उपयोगकर्ता अपने खाते तक पहुंचने के लिए अनुरोध टोकन को "अधिकृत" करता है।
  • टोकन एक्सचेंज: क्लाइंट लंबे समय तक रहने वाले टोकन के लिए अल्पकालिक अस्थायी क्रेडेंशियल्स का आदान-प्रदान करता है।

oauth1 सर्वर प्रवाह


0

मुझे पता है कि मैं इसमें थोड़ी देर कर रहा हूं, लेकिन क्या आप wp_remote_get और _post का उपयोग कर सकते हैं?

मैं अपने वर्डप्रेस इंस्टॉल के साथ कंटेंट को खींच रहा हूं और पोस्ट कर रहा हूं:

इस वर्डप्रेस कोडेक्स से सामान्य विचार है:

$response = wp_remote_post( $url, array(
    'body'    => $data,
    'httpversion' => '1.0',
    'sslverify' => false,
    'headers' => array(
        'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ),
    ),
) );

यहाँ एक अधिक विशिष्ट उदाहरण है:

$url='http://WWW.EXAMPLE HERE.';
$response = wp_remote_post( $url, array(
    'method' => 'POST',
    'timeout' => 45,
    'redirection' => 5,
    'httpversion' => '1.0', //needed to get a response
    'blocking' => true,
    'headers' => array('Authorization' => 'Basic ' . base64_encode( 'MY TOKENID' . ':' . '' )),
    'body' => $body // in array
    'cookies' => array()
    )
);

if ( is_wp_error( $response ) ) {
   $error_message = $response->get_error_message();
   echo "Something went wrong: $error_message";
} else {
 //  echo 'Response:<pre>';
 //  print_r( $response );
 //    echo '</pre>'; 
$responseBody = json_decode($response['body'],true);
echo $responseBody['message'];

    }
    }
}

चाल उपयोगकर्ता नाम और pw एन्कोडिंग है। अब प्रायः एपीआई उपयोगकर्ता नाम पर निर्भर करता है और pw या तो खाली होगा या आपका टोकन होगा।

उदाहरण के लिए ऊपर मेरे विशिष्ट उदाहरण में, हेडर थे

'headers' => array('Authorization' => 'Basic ' . base64_encode( 'MYTOKENID' . ':' . '' ))

और मैंने pw को खाली छोड़ दिया। यद्यपि आप उपयोग कर रहे हैं कि एपीआई प्रणाली पर निर्भर है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.