Как получить секрет доступа oauth для подключения к Soundcloud API

Я новичок в использовании API веб-сайтов. Но я давно хотел этому научиться и сегодня начал с простого примера, как получить доступ к информации из soundcloud. Вот код простого примера с их веб-сайта.

require 'rubygems'
gem 'soundcloud-ruby-api-wrapper'
require 'soundcloud'

gem 'oauth'
require 'oauth'


# Create a Soundcloud OAuth consumer token object
sc_consumer = Soundcloud.consumer('YOUR_APPLICATION_CONSUMER_TOKEN','YOUR_APPLICATION_CONSUMER_SECRET')

# Create an OAuth access token object
access_token = OAuth::AccessToken.new(sc_consumer, 'YOUR_OAUTH_ACCESS_TOKEN', 'YOUR_OAUTH_ACCESS_SECRET')

# Create an authenticated Soundcloud client, based on the access token
sc_client = Soundcloud.register({:access_token => access_token})

# Get the logged in user 
my_user = sc_client.User.find_me

# Display his full name
p "Hello, my name is #{my_user.full_name}"

Я знаю, что установить как:

  • 'ВАШ_ПРИЛОЖЕНИЕ_ПОТРЕБИТЕЛЬСКИЙ_ТОКЕН'
  • 'ВАШЕ_ПРИЛОЖЕНИЕ_ПОТРЕБИТЕЛЬСКИЙ_СЕКРЕТ'

как это было дано при регистрации приложения на soundcloud.

Я установил для YOUR_OAUTH_ACCESS_TOKEN значение http://api.soundcloud.com/oauth/access_token. который также был написан на сайте soundcloud, но я понятия не имею, где взять

_YOUR_OAUTH_ACCESS_SECRET_ от.

Является ли этот секрет доступа также случайной строкой, которую я откуда-то получаю, должен ли я генерировать ее самостоятельно.


EDIT Как было предложено в ответе элитных джентльменов, я также попробовал пример Soundcloud для аутентификации. Я размещаю здесь кусок кода, который уже приводит к ошибке:

require 'rubygems'
gem 'soundcloud-ruby-api-wrapper'
require 'soundcloud'

# oAuth setup code:  
# Enter your consumer key and consumer secret values here:
@consumer_application = {:key => 'QrhxUWqgIswl8a9ESYw', :secret => 'tqsUGUD3PscK17G2KCQ4lRzilA2K5L5q2BFjArJzmjc'}

# Enter the path to your audio file here.  
path_to_audio_file = "your/absolute/path/to/audio_file.ext"

# Set up an oAuth consumer.  
@consumer = OAuth::Consumer.new @consumer_application[:key], @consumer_application[:secret], 
{
  :site               => 'http://api.sandbox-soundcloud.com', 
  :request_token_path => '/oauth/request_token',
  :access_token_path  => '/oauth/access_token',
  :authorize_path     => '/oauth/authorize'
}

# Obtain an oAuth request token
puts "Get request token"
request_token = @consumer.get_request_token

Сообщение об ошибке, которое я получаю, это:

OAuth:: Неавторизованный: 401 Несанкционированный

метод token_request в Consumer.rb в строке 217 метод get_request_token в Consumer.rb в строке 139 на верхнем уровне в test1.rb в строке 25

Как этот простой пример может потерпеть неудачу?


person dedan    schedule 23.11.2010    source источник


Ответы (2)


Ответ на вопрос очень прост. Моя проблема заключалась в том, что я зарегистрировал свое приложение в производственной системе soundcloud soundcloud.com, но направил свои запросы на sandbox-soundcloud.com.

Мне пришлось зайти на sandbox-soundcloud.com, зарегистрировать новую учетную запись пользователя и создать новое клиентское приложение, и все отлично заработало.

Более подробная информация о песочнице доступна здесь: http://github.com/soundcloud/api/wiki/Appendix-B-Sandbox

person dedan    schedule 24.11.2010
comment
Я не уверен, что эта информация актуальна, но она начала объяснять мне некоторые тайны. - person Eric Brotto; 29.06.2011

Как и в случае с OAuth, вам придется зарегистрировать свое приложение в Soundcloud, если вы хотите, чтобы конечный пользователь имел доступ к защищенным ресурсам Soundcloud через ваше приложение.

Когда вы запрашиваете access_token у Soundcloud с помощью OAuth, он возвращает вам access_token и oauth_token_secret. Это oauth_token_secret вы упомянули как _YOUR_OAUTH_ACCESS_SECRET_.

Я не знаю, насколько вы знакомы с OAuth. Документацию можно найти здесь.


Изменить Схема авторизации OAuth недавно изменилась (например, для получения токена доступа необходимо указать oauth_verifier).

См. пример аутентификации в SoundCloud с использованием последней спецификации OAuth.

person Buhake Sindi    schedule 23.11.2010
comment
Спасибо за быстрый ответ. Но я думаю вы не поняли в чем моя проблема, может потому что она слишком простая. Для запроса access_token (access_token = OAuth::AccessToken.new(sc_consumer, 'YOUR_OAUTH_ACCESS_TOKEN', 'YOUR_OAUTH_ACCESS_SECRET')) мне уже нужно знать YOUR_OAUTH_ACCESS_SECRET Понимаете, о чем я? - person dedan; 23.11.2010
comment
@dedan, на твой вопрос ответ да, но это похоже на старую схему аутентификации OAuth. Посмотрите мой отредактированный пост, чтобы узнать больше. - person Buhake Sindi; 23.11.2010
comment
хорошо, я попробую этот новый пример, который вы разместили в своем редактировании завтра. Мне просто интересно, потому что тот, который я использовал, последний раз редактировался 13 сентября 2010 года. Большое спасибо, я опубликую свои результаты здесь завтра. - person dedan; 23.11.2010
comment
Я также попробовал то, что вы предложили (см. редактирование моего поста), но это все еще не работает. Я подозреваю, что это также может быть проблема с soundclous !? попробую спросить в их группе - person dedan; 24.11.2010