如何获取数据,包括必须通过Megento REST API授权的产品信息和客户信息?我一步一步地遵循指南,但仍然不知道该怎么做。 首先,我根据指南在管理员面板上创建了一个新的消费者。
然后,我在我的主机根目录下构建了一个oauth_admin.php。
<?php
$callbackUrl = "http://demo1.sunpop.cn/oauth_admin.php";
$temporaryCredentialsRequestUrl = "http://demo1.sunpop.cn/oauth/initiate?oauth_callback=" . urlencode($callbackUrl);
$adminAuthorizationUrl = 'http://demo1.sunpop.cn/admin/oAuth_authorize';
$accessTokenRequestUrl = 'http://demo1.sunpop.cn/oauth/token';
$apiUrl = 'http://demo1.sunpop.cn/api/rest';
$consumerKey = 'e94b6b9c113d4903aaab4f08c8150754';
$consumerSecret = 'fcf5bdf58bc36c434e52f1ac916ba5ae';
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']);
header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token'].'&oauth_token_secret='.$requestToken['oauth_token_secret']);
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, array(), 'GET', array('Content-Type' => 'application/json'));
$productsList = json_decode($oauthClient->getLastResponse());
print_r($productsList);
}
} catch (OAuthException $e) {
print_r($e->getMessage());
echo "<br/>";
print_r($e->lastResponse);
}
?>
之后,我尝试访问myhost / oauth_admin.php。这个地址响应404但是我可以像这样在重定向链接上获得oauth_token和oauth_token_secret。
然后,我复制了oauth_token和oauth_token_secret,并尝试使用REST-Client向myhost / api / rest / stockitems发送请求,但返回了401。
<?xml version="1.0"?>
<magento_api>
<messages>
<error>
<data_item>
<code>401</code>
<message>oauth_problem=consumer_key_rejected</message>
</data_item>
</error>
</messages>
</magento_api>
我的环境可以在http://demo1.sunpop.cn/phpinfo.php找到 我是magento的初学者。我想知道在这个过程中我犯了什么错误。如何从RestAPI获取数据?如果有任何问题可以提供帮助,我将非常感激。
答案 0 :(得分:0)
请将oAuth_authorize
更改为所有小oauth_authorize
。