基于Python的magento consum

2024-05-20 21:38:22 发布

您现在位置:Python中文网/ 问答频道 /正文

作为我问题的延伸-https://stackoverflow.com/q/36847384/658209

我在考虑使用OAuth1Session from requests_oauthlib来检索访问令牌和访问令牌机密值。我想做一些类似于下面例子中所做的事情:

<?php
/**
* Example of OAuth authorization n using Admin account via Magento REST API.
*/
$callbackUrl = "http://yourhost/oauth_admin.php";
$temporaryCredentialsRequestUrl = "http://magentohost/oauth/initiate?oauth_callback=" .
urlencode($callbackUrl);
$adminAuthorizationUrl = 'http://magentohost/admin/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']) {68
$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);
echo "oauth_token:".$accessToken['oauth_token']."<br/>";
echo "oauth_token_secret:".$accessToken['oauth_token_secret'];
exit;
} else {
echo "authorisation failed";
}
} catch (OAuthException $e) {
print_r($e);
}

我想出了以下代码:

^{pr2}$

我不确定如何处理回调和重定向,而不是要求用户转到授权url,然后粘贴重定向url

编辑:在阅读了Robbie的评论后,我更新了我的代码,并将其分成两个端点。所以现在我的应用程序流程是这样的:

  1. 用户转到magentosetup.html并输入消费者令牌、secret和它们的magento实例url。他们提交这个表格
  2. 我们从上面的表单中获取凭证到Magento_Oauth_管理post,然后触发Oauth舞蹈来生成访问令牌和密码。在
  3. 一旦访问令牌被生成,我将把它存储在某处(不是在这里编写代码)

我现在的问题是最后一步(在提供者将用户重定向到消费者API之后,在用户授权之后),我是否能够将用户重定向到magentosetupcomplete.html通过使用return render_template('magentosetupcomplete.html')向用户确认已生成并保存了访问令牌。我问这个是因为/callback端点已经从magento调用了。我不确定在这种情况下控制的流程是什么。在


Tags: 用户tokenhttpgetsecretifsessionoauth