Как получить «секрет доступа oauth» для подключения к API Soundcloud - PullRequest
1 голос
/ 23 ноября 2010

Я новичок в использовании 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}"

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

  • YOUR_APPLICATION_CONSUMER_TOKEN '
  • YOUR_APPLICATION_CONSUMER_SECRET '

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

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

_YOUR_OAUTH_ACCESS_SECRET_ с.

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


EDIT Как было предложено в ответе Elite Gentlemen, я также попробовал пример 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 в Потребитель.рб в строке 139 вверху уровень в test1.rb в строке 25

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

Ответы [ 2 ]

2 голосов
/ 24 ноября 2010

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

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

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

1 голос
/ 23 ноября 2010

Как и в случае с 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.

...