(spotipy) метод никогда не завершается, потому что он заканчивается в представлении URL-адреса перенаправления oauth

Я пытаюсь использовать Spotipy для выполнения поискового запроса от Spotify. Я указал идентификатор клиента, секретный идентификатор и URL-адрес перенаправления (http://127.0.0.1:8000/callback/q) в моих bash_profiles, как описано в API.

def search(username, query):

    token = util.prompt_for_user_token(username, scope) #like oauth with redirect url
    print("received token response")

    if token:
        sp = spotipy.Spotify(auth=token)
        return sp.search(query, 1, 0, type='track')

Проблема в том, что я использую django, что также заставляет меня указывать URL-адрес перенаправления в моем urls.py и соответствующее представление в views.py.

    [from urls.py...]
    url(r'^callback/q$', views.callback, name='callback'),

    [from views.py...]
    def callback(request):
        print("callback view reached")
        return render(request, 'rec/search.html')

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


person tara    schedule 08.08.2016    source источник
comment
Это не имеет особого смысла. Какое отношение имеет ваш bash_profile к чему-либо? Почему вы запрашиваете токен в веб-приложении?   -  person Daniel Roseman    schedule 08.08.2016
comment
так работает Spotipy API. Вы используете метод util, чтобы получить токен, создать объект Spotify и вызвать для него методы. Для профиля bash вы можете экспортировать переменные (как я) или передать их как аргументы методу аутентификации.   -  person tara    schedule 08.08.2016
comment
чтобы быть более конкретным в запросе пользователя. он открывает страницу на Spotify, и пользователь должен согласиться предоставить определенные привилегии. я считаю, что это только первая аутентификация, а не токены обновления   -  person tara    schedule 08.08.2016
comment
@тара, ты когда-нибудь догадывалась об этом? Сам сталкиваюсь с подобными проблемами   -  person stackPusher    schedule 04.02.2017


Ответы (1)


Я не уверен, поможет ли это, но я отказался от аутентификации через util.prompt_for_user_token в пользу этой базовой реализации. Он реализован в бутылке, но его относительно легко перевести на django и ваши конкретные потребности. Я надеюсь сделать то же самое.

person Steve Baker    schedule 09.08.2016
comment
Спасибо! посмотрю, что я могу с этим сделать, и добавлю сюда, если найду что-нибудь полезное. хотя мне все еще очень любопытно, что я делал неправильно, так как похоже, что авторизация с перенаправлением является распространенным шаблоном. мне немного повезло, что я выделил токен авторизации в отдельный метод, но все равно не работал на 100% - person tara; 10.08.2016