Spotify вход в iOS SDK с токеном доступа от django-allauth - PullRequest
0 голосов
/ 05 июля 2018

Я создаю приложение для iOS с воспроизведением Spotify с бэкэндом django. Это мой первый программный проект, и я немного зациклен на oauth2. Я знаю, что мне нужно выполнить поток кода авторизации на стороне сервера, чтобы получить обновляемые пользовательские токены.

Я настроил django-allauth в своем проекте django и смог заставить его работать для аутентификации пользователей Spotify, несмотря на ограниченную документацию для Spotify. Я могу позвонить localhost: 8000 / users / spotify / login, и код будет обновлен, а токен vlid-доступа будет сохранен в базе данных (сделан авторизованный запрос на Postman). Я верю, что это сработает, когда я внесу изменения и в героку, а у меня пока нет.

Возвращаясь к своему iOS-приложению, я пытаюсь использовать sdk для потоковой передачи песен. Я запускаю SPTAudioStreamingController.sharedInstance () с моим идентификатором клиента, без проблем, а затем пытаюсь войти в систему с жестко запрограммированным маркером доступа, но безуспешно. Я знаю, что мне чего-то не хватает, возможно, это связано с сеансом, который возвращается, когда аутентификация полностью выполняется через iOS. Я надеюсь получить разъяснения о том, как завершить эту реализацию и правильно войти в SDK, используя токены доступа, хранящиеся в моем бэкэнде django. Это функция, которая пытается настроить spotify и войти в систему. Вызывается в приложении-делегате.

        print("Setting up spotify")
    SPTAuth.defaultInstance().clientID = "hardcodedclientID"
    SPTAuth.defaultInstance().redirectURL = URL(string: "hardcodedredirectURL")
    SPTAuth.defaultInstance().sessionUserDefaultsKey = "spotifySessionKey"

    SPTAuth.defaultInstance().requestedScopes = [SPTAuthStreamingScope, SPTAuthUserLibraryReadScope]

    do {
        try SPTAudioStreamingController.sharedInstance().start(withClientId: "hardcodedclientID")
    } catch {
        fatalError("Couldn't start Spotify SDK")
    }
    print("shared instance started")
    SPTAudioStreamingController.sharedInstance().login(withAccessToken: hardCodedAccessTokenFromDjango)
    print(SPTAudioStreamingController.sharedInstance().loggedIn)

Я установил все настройки приложения, которые мне нужны, в соответствии с двумя учебниками, которым я следовал здесь и здесь. Я знаю, что не смогу жестко закодировать информацию так, но у меня сложилось впечатление, что я должен быть в состоянии войти (withaccesstoken :), просто используя токен доступа, который я имел. Я пытаюсь найти лучший способ отправки моего токена доступа через My Django REST API и затем аутентифицировать SDK с его помощью.

1 Ответ

0 голосов
/ 05 июля 2018

В итоге я смог заставить работать тот же код. Я добавил переменную сеанса и установил ее, но основная проблема заключалась в том, что по умолчанию django-allauth не запрашивал никаких областей действия, я изменил исходный код на необходимые области, и процесс пошел намного более плавно. Я полагаю, что могу получить доступ к своему токену доступа через свой API, и этого будет достаточно для инициализации каждой клиентской стороны, то есть wa

...