【问题标题】:how to get oauth access token and secret for magento using php如何使用php获取magento的oauth访问令牌和秘密
【发布时间】:2025-11-27 10:35:01
【问题描述】:

我有消费者密钥和秘密。我尝试使用消费者密钥和秘密获取 oauth 请求令牌,但我遇到了错误,这是

未捕获的异常 'OAuthException' 带有消息 'Invalid auth/bad 请求(得到 404,预期 HTTP/1.1 20X 或重定向)'

我尝试了下面的代码来获取请求令牌,但它没有工作

$callbackUrl = "http://www.myhost.com/oauth_admin.php";
$temporaryCredentialsRequestUrl = "http://www.myhost.com/oauth/initiate?oauth_callback=" . urlencode($callbackUrl);
$adminAuthorizationUrl = 'http://www.myhost.com/admin/oauth_authorize';
$accessTokenRequestUrl = 'http://www.myhost.com/oauth/token';
$apiUrl = 'http://www.myhost.com/api/rest';
$consumerKey = 'my consumerKey';
$consumerSecret = 'my consumerSecret';

session_start();

if (!isset($_GET['oauth_token']) && isset($_SESSION['state']) && $_SESSION['state'] == 1) {
    $_SESSION['state'] = 0;
}

$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']) && !isset($_SESSION['state'])) {
    $requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl);
   echo  $_SESSION['secret'] = $requestToken['oauth_token_secret'];
    $_SESSION['state'] = 1;
    header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']);
    exit;
} else if (isset($_SESSION['state']) && $_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;
}
print_r($_SESSION);//get this by next page

任何帮助都会很棒!

【问题讨论】:

  • 您收到 404,这意味着您正在调用的服务器在您使用的 URL 处没有找到资源/脚本。

标签: php magento oauth


【解决方案1】:

我通过更改服务器配置来假设 .htaccess 规则解决了这个问题。试试看吧。

【讨论】:

  • 你应该详细说明你是如何做到的