#python #spotify
#python #spotify
Вопрос:
Я в тупике из-за этого:
@bp.route('/api/spotify_auth')
def api_spotify_auth():
code = request.args.get("code", None)
error = request.args.get("error", None)
state = request.args.get("state").strip(""'")
if state not in Spotify.valid_states:
return jsonify({
"error": "State returned was not valid",
"states": Spotify.valid_states,
"state": state,
"check": state in Spotify.valid_states
}), 500
Я ожидаю, что вызов будет включать state
параметр, который ранее был добавлен в список, Spotify.valid_states
. Однако при запросе маршрута я получаю:
{
"check": false,
"error": "State returned was not valid",
"state": "07fec2ea-123f-42e8-9e64-07026ca87ae5",
"states": [
"07fec2ea-123f-42e8-9e64-07026ca87ae5"
]
}
Очевидно, python возвращается false
к state in states
… но мне кажется, что это должно вернуться true
.
Кто-то упомянул кавычки, вызывающие проблемы, отсюда .strip(""'")
, однако проблема сохраняется.
Приветствуются любые предложения 🙂
Комментарии:
1.
Spotify.valid_states
похоже, содержит uuid, вы уверены, что это список строк, а не uuid?2.
Spotify.valid_states
может быть список объектов,repr
который просто выглядит как «обычная» строка Python, но посколькуin
используется равенство, он завершится ошибкой при использовании противstr
объекта. Вы должны убедиться, чтоSpotify.valid_states
действительно содержит (попробуйтеprint(type(Spotify.valid_states[0]))
)3. Вау, вы оба попали в точку — я подумал о чем-то забавном с uuid, но в моем тестировании он действовал точно так же, как строка, поэтому я не понял, что это что-то иное. Преобразование в строку сразу при создании uuid исправило это. Очень признателен 🙂