Как подключиться к Discogs Api с помощью Zend_Oauth? - PullRequest
0 голосов
/ 15 февраля 2012

Я пытаюсь подключиться к api discogs.com через Zend_Oauth как часть пользовательского модуля Magento.

Описание API Discogs здесь:

доступ

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 ссоответствующие данные ключа учетной записи он работает и перенаправляет в твиттер для подтверждения доступа, как и должно.

Я пробовал различные настройки $ 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 ":" Theзапрашиваемый ресурс не найден. "}"

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 18 февраля 2012

Добрые люди на 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',
    );   
...