如何使用Zend_Oauth连接Discogs Api?

时间:2012-02-15 15:27:28

标签: php zend-framework discogs-api

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

Discogs API详情如下:

accessing

oauth

我已经在这里使用Zend Oauth的详细信息: introduction

建议的代码如下......

(我在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“:”找不到请求的资源。“}”

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

discogs的那些人指出授权网址应该是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',
    );