Вопрос по soundcloud – Как сделать так, чтобы пользователи «переподключались» со звуковым облаком на каждой странице, чтобы перезагрузить?

2

Я использую Javascript SDK внутри приложения node.js (Express).

Подключение пользователей работает нормально, но соединение не сохраняется между перезагрузками страницы. Это поведение по умолчанию, или пользователь должен оставаться подключенным в новых запросах?

Нужно ли использовать аутентификацию по токену OAuth, и если да, то как это можно сделать с помощью JS-SDK? Внутри всплывающего окна «Разрешения» пользователи уже вошли в систему с помощью soundlcoud. (просто нужно каждый раз нажимать кнопку «подключиться»)

Прочитав эту веткуgroups.google.com/group/soundcloudapi/browse_thread/thread/… я нашел какой-то обходной путь, сохранив токен доступа в cookie-файле и установив window.SC.storage (). setItem ("SC.accessToken", & lt; COOKIE_VALUE & gt;) после перезагрузки страницы. в то время как это делает трюк для меня, я по-прежнему очень хочу знать, есть ли более официальный способ сделать это. Max Girkens
... как уже упоминалось в потоке, получить токен доступа с помощью window.SC.storage (). getItem ("SC.accessToken") Max Girkens

Ваш Ответ

2   ответа
2

Для сайта Next SoundCloud мы сохраняем токен в localStorage (конечно, пока пользователь не выйдет из системы). В каждом AJAX-запросе к API от внешнего интерфейса мы помещаем токен oauth в заголовок запроса:

jqXHR.setRequestHeader('Authorization', 'OAuth ' + the_oauth_token);
круто, чертовски хорошо :) Max Girkens
3

я поделюсь своим ответом для тех, кто не удовлетворен текущими ответами для автоматического ответа:

Получение access_token:

Мне пришлось определить функции получения и установки cookie, а затем я использую функции для установки и получения функции, содержащей маркер доступа. Я не собираюсь давать эти функции для краткости, но вы легко можете найти их с помощью поиска Google. Затем я использую эту строку кода, чтобы получить токен доступа к SC (как только пользователь прошел аутентификацию в первый раз)

SC.accessToken()

Установка токена:

Так что это своего рода слон в комнате, на мой взгляд, по какой-то причине никто не упомянул. Как в **** вы подключаетесь с SC с помощью токена доступа? Вы устанавливаете это как oauth param? На каждый звонок проходить это? Ну, после экспериментов с размещением параметра в каждом отдельном месте, которое я мог подумать, я обнаружил, что вы должны сделать что-то вроде этого:

            SC.initialize({
              client_id: '[removed for security reasons]',
              client_secret: '[removed for security reasons]',
              redirect_uri: '[removed for security reasons]',
              access_token: getCookie("sc_lm2"),
              scope: 'non-expiring'
            }); 
//Where "sc_lm2" is the name of my cookie

Надеюсь, что помогает! Мне понадобилось время, чтобы понять это для такой простой вещи

EDIT

Использование PHP и Wordpress:

$json = wp_remote_get("http://api.soundcloud.com/users/[user_id]/tracks.json?client_id=[client_id]");
$soundcloudData = json_decode($json['body'],true);

(заменить функциональность cURL, если вы не используете Wordpress). @krafty Я предполагаю, что вы просто изменили бы конечную точку с & quot; / track & quot; для "/ пользователей" но я не могу сказать, что мне когда-либо действительно нужно было захватывать что-либо, кроме треков, с помощью Soundcloud API. Надеюсь, это поможет, хотя я не уверен, что полностью понимаю, что именно вы пытаетесь достичь (или, скорее, как именно вы это делаете) - вы пытаетесь разрешить вход пользователей? Если вы хотите полностью объяснить, что вы пытаетесь выполнить, и какие шаги вы предпринимаете, я был бы рад попробовать.

Я продолжал получать экраны входа в систему для каждого запроса, который я хотел сделать. Однако если вы перенаправляете после аутентификации пользователя и вызываете SC.initialize, передавая access_token (который я сохранил в localstore), вы можете просто вызвать SC.get () и т. Д. Без необходимости каждый раз вызывать SC.connect. Спасибо, что заметили это
Некоторое время искал это, и это прекрасно. Спасибо!
Вы на самом деле помещаете свой секретный ключ в javascript? Я не могу представить, что это решение, поэтому я должен предположить, что я что-то упустил. Я пытаюсь подобрать объект пользователя со страницы перенаправления, где мой токен доступа указан в параметрах URL, возвращаемых сервером SoundCloud, но не могу найти документацию
Будь то Javascript или Android, если секретный ключ не вызывается безопасно из серверной части кода, вы оставляете свое королевство открытым. Если бы кто-то прочитал ваш javascript или, например, в случае Android, воспользуйтесь утилитой для чтения вашего источника, он может легко получить ваши учетные данные SC и выдать себя за ваш аккаунт с точки зрения SoundCloud.
О да, я также хотел бы отметить, что большая часть этого может включать в себя ваш client_secret, но я лично не проверял эту теорию. Хотелось бы знать!

Похожие вопросы