0

カスタム Magento モジュールの一部として Zend_Oauth を使用して、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

これが表示されると:

"{"メッセージ": "要求されたリソースが見つかりませんでした。"}"

注意: 関連するアカウント キーの詳細を使用して Twitter API Oauth に対して同じコードを実行すると、動作し、必要に応じてアクセス確認のために Twitter にリダイレクトされます。

requestScheme、requestMethod など、さまざまな $config 設定を試しましたがうまくいきませんでした。

必要なヘッダーと関係があるのではないかと考えたので、 $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();

同じ応答が得られます。

"{"メッセージ": "要求されたリソースが見つかりませんでした。"}"

どんな助けでも大歓迎です。

4

1 に答える 1

0

Discogs の親切な人々は、オーソライズ URL は api ではなく www であるべきだと指摘したので、動作する正しい構成は次のようになります。

    $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 に答える