Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"http://{root_dir}/oauth/token" File Not Found in Magento to register REST API application

I have Written code in ZEND For Accessing Magento REST API for accessing data.

<?php

require_once 'Zend/Oauth/Consumer.php';

class AuthController extends Zend_Controller_Action
{

public function init()
{
    $this->hostname = 'http://localhost/magento';
    $consumerKey = 'mkkzxuu1bkveejyzjam5hl2pzaxxepwv';
    $consumerSecret = 'bcmczrp3ofn9vmviqu3j8o1ioa7fisl6';
    $callbackUrl = 'http://localhost/magento/oauth/token';
    $this->config = array(
        'callbackUrl' => $callbackUrl,
        'requestTokenUrl' => $this->hostname . '/oauth/initiate',
        'siteUrl' => $this->hostname . '/oauth',
        'consumerKey' => $consumerKey,
        'consumerSecret' => $consumerSecret,
        'authorizeUrl' => $this->hostname . '/admin/oauth_authorize',
       //  'authorizeUrl' => $this->hostname . '/oauth/authorize',
        'accessTokenUrl' => $this->hostname . '/oauth/token'
    );
}

public function indexAction()
{
    $accesssession = new Zend_Session_Namespace('AccessToken');

    if (isset($accesssession->accessToken)) {

        $token = unserialize($accesssession->accessToken);
        // $client = $token->getHttpClient($this->config);
        $client = new Zend_Http_Client();
        $adapter = new Zend_Http_Client_Adapter_Curl();
        $client->setAdapter($adapter);
        $adapter->setConfig(array(
            'adapter'   => 'Zend_Http_Client_Adapter_Curl',
            'curloptions' => array(CURLOPT_FOLLOWLOCATION => true),
        ));
        $client->setUri($this->hostname . '/api/rest/products');
        $client->setParameterGet('oauth_token', $token->getToken());
        echo $token->getToken();
        echo $token->getTokenSecret();
        $client->setParameterGet('oauth_token_secret', $token->getTokenSecret());
        $response = $client->request('GET');
        $products = Zend_Json::decode($response->getBody());
    } else {
        $consumer = new Zend_Oauth_Consumer($this->config);
        $token = $consumer->getRequestToken();
        $requestsession = new Zend_Session_Namespace('RequestToken');
        $requestsession->requestToken = serialize($token);     
        $consumer->redirect();

    }
    $this->view->products = $products;
}

public function callbackAction()
{
    $requestsession = new Zend_Session_Namespace('RequestToken');
    if (!empty($_GET) && isset($requestsession->requestToken)) {
        $accesssession = new Zend_Session_Namespace('AccessToken');
        $consumer = new Zend_Oauth_Consumer($this->config);
        $token = $consumer->getAccessToken(
            $_GET,
            unserialize($requestsession->requestToken)
        );
        $accesssession->accessToken = serialize($token);
        // Now that we have an Access Token, we can discard the Request Token
     //   unset($requestsession->requestToken);
        // $this->_redirect();
        $this->_forward('index', 'index', 'default');
    } else {
        // Mistaken request? Some malfeasant trying something?
       // throw new Exception('Invalid callback request. Oops. Sorry.');
    }
}

public function callbackrejectedAction()
{
    // rejected
}
}

I have try this url many time

http://localhost/magento/oauth/token?oauth_token=medensg02pvrd1rdfjcay4bwkr76whkk&oauth_verifier=qxvbth1rfe4vv78n7r6mprtxvuq2yqhb

but not getting anything rather than File not found error.

You can see this url exist at magento official resource. http://www.magentocommerce.com/api/rest/authentication/oauth_authentication.html

After Calling this controller belows request generate for authorize after accepting this.

Throws belows error file not founds.

like image 961
Dixit Patel Avatar asked Jul 18 '13 12:07

Dixit Patel


1 Answers

First of all you need to install oauth extension for php, if it's already install than check your phpinfo that it's enabled. Than go to admin section and make the following changes to check the response of rest api.

admin->system->Webservice->rest attribute->guest->resources access and set ALL

admin->system->webservice->rest roles->guest->resources access and set ALL

save the settings and hit your url

http://hostname/magento/api/rest/products/

it will show you the response in xml format.later on modify the resource access as per your requirement.

once you make sure that magento is responding to the reset api than run your code and I feel it will work.

like image 65
Ram Sharma Avatar answered Nov 02 '22 07:11

Ram Sharma