0

我正在尝试使用 Zend_Oauth 作为自定义 Magento 模块的一部分连接到 discogs.com api。

Discogs API 详细信息在这里:

访问

oauth

我在这里遵循了使用 Zend Oauth 的详细信息: 介绍

建议的代码如下...

(我已经在 Discogs 上设置了一个测试帐户,所以这里的密钥和秘密是正确的、有效的并且可以测试。)

$config = array(
    'callbackUrl' => 'http://www.example-discogs-app.co.uk',
    'siteUrl' => 'http://api.discogs.com/oauth',
    'consumerKey' => 'qvJGTkWsbVMGZGYCHCrQ',
    'consumerSecret' => 'iBMnIrhFzoHjqaiVbkhhrmipzcaBwBCc'
    );
$consumer = new Zend_Oauth_Consumer($config);

// fetch a request token
$token = $consumer->getRequestToken();

// persist the token to storage
$_SESSION['DISCOGS_REQUEST_TOKEN'] = serialize($token);

// redirect the user
$consumer->redirect();

我得到一个请求令牌并被重定向到:api.discogs.com/oauth/authorize?oauth_token=xyzrequesttoken

显示如下:

"{"message": "未找到请求的资源。"}"

注意:当我使用相关帐户密钥详细信息对 Twitter API Oauth 运行相同的代码时,它会正常工作并重定向到 Twitter 以进行访问确认。

我尝试了各种 $config 设置,但都没有成功,例如 requestScheme、requestMethod、。

我认为这可能与所需的标头有关,所以我也尝试替换 $consumer->redirect(); 使用以下...(从上面的 $token 响应中提取 $token)

$client = new Zend_Http_Client();
$client->setHeaders('Content-Type: application/json');
$client->setHeaders('User-Agent: +Xyz');
$client->setUri('http://api.discogs.com/oauth/authorize?oauth_token='.$token);
$client->setMethod(Zend_Http_Client::POST);
$response = $client->request();

我得到同样的回应:

"{"message": "未找到请求的资源。"}"

任何帮助将非常感激。

4

1 回答 1

0

discogs 的好心人指出,授权 url 应该是 www 而不是 api,所以正确的配置如下所示:

    $config = array(
        'callbackUrl' => http://www.example-discogs-app.co.uk,
        'consumerKey' => 'tJOGhRhfsCQKnGCaOZin',
        'consumerSecret' => 'dxyrhywgvMgVqrZsmncCrQyAXnRHwZVq',
        'requestTokenUrl' => 'http://api.discogs.com/oauth/request_token',
        'authorizeUrl' => 'http://www.discogs.com/oauth/authorize',
        'accessTokenUrl' => 'http://api.discogs.com/oauth/access_token',
    );   
于 2012-02-17T20:17:30.927 回答