তৃতীয় পক্ষের সাথে ম্যাজেন্টো REST এপিআই কীভাবে সংহত করা যায়?


9

আমি কেবলমাত্র REST এপিআই সম্পর্কে তথ্য সন্ধান করার চেষ্টা করছিলাম। ম্যাজেন্টো রিসোর্সে কিছু বেসরকারী ব্লগ রয়েছে। সব এক !!

বেসিক তথ্য হিসাবে আমি খুঁজে পেয়েছি যদি আমি REST এপিআইয়ের মাধ্যমে পণ্যগুলি আপডেট করতে চাই তবে আমার প্রশাসনিক অনুমোদনের শেষ পয়েন্টটি ব্যবহার করা দরকার। (/ অ্যাডমিন / oauth_authorize) এবং আমি গ্রাহক বা অতিথি ব্যবহার করলে আমি কেবল ডেটা পুনরুদ্ধার করতে পারি।

আমি নমুনা কোড তৈরি এবং চেক করার চেষ্টা করেছি এবং যখন আমি ব্রাউজারের মাধ্যমে কোড চালাচ্ছিলাম তখন আমাকে প্রথমে অ্যাডমিনে লগইন করতে হবে এবং তারপরে আমাকে অ্যাক্সেস গ্রহণ করতে হবে এবং তারপরে আমি API সংস্থান ব্যবহার করতে পারি।

আমি জানি না কেন এটি আমাকে প্রথমে অ্যাডমিনে লগইন করতে বলছে। এবং যদি এটি অ্যাক্সেস করার জন্য আমার অবশ্যই লগইন করতে হবে তবে এটি সার্ভারের মধ্যে কীভাবে অভ্যন্তরীণভাবে কাজ করবে।

আমি নীচের ব্লগ ব্যবহার করে নমুনা কোড তৈরি করার চেষ্টা করেছি

http://inchoo.net/ecommerce/magento/consuming-magento-rest-zend_oauth_consumer/comment-page-1/#comment-66775

এবং এটি ভাল কাজ করছে এবং প্রতিক্রিয়াও দিচ্ছে।

প্রকৃতপক্ষে আমি কীভাবে এটি দুটি সার্ভারের মধ্যে অভ্যন্তরীণভাবে কাজ করবে এবং ক্লায়েন্ট কীভাবে এটি প্রমাণীকরণযোগ্য হবে এবং ম্যাজেন্টো কীভাবে প্রতিক্রিয়া ফিরিয়ে দেবে তা ম্যাগেন্টোতে কীভাবে REST এপিআই কল করবে তা সন্ধান করছি।

পরামর্শ খুঁজছি।


REST এপিআই OAuth অ্যাক্সেসের জন্য অর্থাত্ ব্যবহারকারীর ইন্টারঅ্যাকশন, তাই আপনার ক্ষেত্রে এটি সম্ভবত সঠিক পছন্দ নয়। আপনি যদি এসওএপি এপিআই ব্যবহার করতে না চান, সম্ভবত এই প্রশ্নটি + উত্তর আপনাকে সহায়তা করে: magento.stackexchange.com/questions/510/…
ফ্যাবিয়ান শেমংলার

উত্তর:


6

আপনি এখানে Magento REST এপিআই এর একটি ভাল ব্যাখ্যা পেতে পারেন । লগ ইন করা গ্রাহক হিসাবে কীভাবে পণ্যগুলি পুনরুদ্ধার করবেন তার একটি উদাহরণও রয়েছে। উত্তরটি আরও দীর্ঘ করতে আমি এখানে এটি পুনরুত্পাদন করব।

<?php
/**
 * Example of products list retrieve using Customer account via Magento REST API. OAuth authorization is used
 */
$callbackUrl = "http://yourhost/oauth_customer.php";
$temporaryCredentialsRequestUrl = "http://magentohost/oauth/initiate?oauth_callback=" . urlencode($callbackUrl);
$adminAuthorizationUrl = 'http://magentohost/oauth/authorize';
$accessTokenRequestUrl = 'http://magentohost/oauth/token';
$apiUrl = 'http://magentohost/api/rest';
$consumerKey = 'yourconsumerkey';
$consumerSecret = 'yourconsumersecret';

session_start();
if (!isset($_GET['oauth_token']) && isset($_SESSION['state']) && $_SESSION['state'] == 1) {
    $_SESSION['state'] = 0;
}
try {
    $authType = ($_SESSION['state'] == 2) ? OAUTH_AUTH_TYPE_AUTHORIZATION : OAUTH_AUTH_TYPE_URI;
    $oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $authType);
    $oauthClient->enableDebug();

    if (!isset($_GET['oauth_token']) && !$_SESSION['state']) {
        $requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl);
        $_SESSION['secret'] = $requestToken['oauth_token_secret'];
        $_SESSION['state'] = 1;
        header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']);
        exit;
    } else if ($_SESSION['state'] == 1) {
        $oauthClient->setToken($_GET['oauth_token'], $_SESSION['secret']);
        $accessToken = $oauthClient->getAccessToken($accessTokenRequestUrl);
        $_SESSION['state'] = 2;
        $_SESSION['token'] = $accessToken['oauth_token'];
        $_SESSION['secret'] = $accessToken['oauth_token_secret'];
        header('Location: ' . $callbackUrl);
        exit;
    } else {
        $oauthClient->setToken($_SESSION['token'], $_SESSION['secret']);
        $resourceUrl = "$apiUrl/products";
        $oauthClient->fetch($resourceUrl);
        $productsList = json_decode($oauthClient->getLastResponse());
        print_r($productsList);
    }
} catch (OAuthException $e) {
    print_r($e);
}

আমি ইতিমধ্যে এই কোডটি পরীক্ষা করেছি। আমি যখন $ adminAuthorizationUrl = ' magentohost / oauth / অনুমোদন ' ব্যবহার করছি তখন এটি গ্রাহক লগইনে আমাকে প্রথমে পুনঃনির্দেশ করছে এবং যখন আমি $ adminAuthorizationUrl = ' ম্যাজেন্টোহোস্ট / অ্যাডমিন / oauth_authorize ' ব্যবহার করছি এটি প্রথমে আমাকে অ্যাডমিন লগইনে পুনঃনির্দেশ করছে এবং তারপরে আমার দরকার প্রথমে এটি প্রমাণীকরণ করুন। তৃতীয় পক্ষ কীভাবে এই জিনিসগুলিতে অ্যাক্সেস করতে পারে। এর অর্থ যদি আমি এই কাজটি করার জন্য তৃতীয় পক্ষের কাছ থেকে একটি ক্রোন সেট করে রাখছি যেমন নতুন পণ্য তৈরি করা বা বিদ্যমানটিকে আপডেট করা হয় তবে এটি কীভাবে এটি অনুমোদন করতে পারে।
অখিলেশ প্যাটেল

@ মারিয়াস, আপনার উত্তরের সর্বশেষ ওপি মন্তব্যের কোনও সমাধান জানেন? পুনঃনির্দেশ এবং লগিং procces ছাড়া OAuth এবং বিশ্রাম ব্যবহার করতে
সের্গিও

@sergio। দুঃখিত, আমি না
Marius

আমি এই ওআউথ ব্যবসায়ে মোটামুটি নতুন, তবে আমি এটি বুঝতে পেরেছি এর পুরো বিষয়টিটি একটি ইন্টারেক্টিভ লগইনকে বাধ্য করা। একটি নিবন্ধিত ওয়েবসাইট গ্রাহক বা প্রশাসকের অ্যাপ্লিকেশন শারীরিকভাবে অনুমোদিত করতে হবে। যদি আপনি এটি না চান তবে আপনি "অতিথি" ভূমিকাটি ব্যবহার করার চেষ্টা করতে পারেন যা আমি বিশ্বাস করি যে ওআউথ ধাপের প্রয়োজন নেই (এটি নিজে চেষ্টা করা হয়নি); অথবা REST এর পরিবর্তে SOAP / XML-RPC API ব্যবহার করুন।
ডগ ম্যাকলিন

@ ডউগ এমসিএলিয়ান বা আপনি কাস্টম প্রমাণীকরণ অ্যাডাপ্টার স্নোকোয়ার.আর.মেনজো
রোমান স্নিটকো

2

উপরের কোড থেকে আপনি টোকেন এবং টোকেন গোপন করতে পারেন, কেবল এটি অনুলিপি করুন:

...........
echo 'token:---'.$_SESSION['token'].'----secret----'.$_SESSION['secret'];
........

সুতরাং, আপনি পণ্য তৈরি / সম্পাদনা করতে নীচের মত একটি কোড প্রস্তুত করতে পারেন:

<?php
$apiUrl = 'APIURL';
$consumerKey = 'CONSUMERKEY';
$consumerSecret = 'CONSUMERSECRED';
$token = 'TOCKEN';
$tokensecret = 'TOKENSCRET';

try {

    $oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1);
    $oauthClient->setToken($token, $tokensecret);
    $oauthClient->enableDebug();          

    $productData = json_encode(array(           
            'name'              => 'TEST PRODUCT',           
            'price'             => 11.11          
        ));       

    $resourceUrl = "$apiUrl/products/222";
    $oauthClient->fetch($resourceUrl, $productData , 'PUT',  array('Content-Type' => 'application/json'));
    $responseArr = json_decode($oauthClient->getLastResponse());
    print_r($responseArr);

} catch (OAuthException $e) {
    print_r($e);
}

?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.