Я локально развернул в Heroku минималистичное приложение c Flask, которое использует Spotipy в качестве оболочки для Spotify API.
Я использую поток кода авторизации Spotify, в котором пользователю предлагается ввести разрешение только один раз. При локальном запуске приложение работает по назначению, но не в рабочей среде. Проблема возникает из-за функции redirect_uri
для настроек Spotify и Spotify. Итак, если в бэкэнд-скрипте я поставил http://localhost:9120/callback
и тот же redirect_uri
для настроек приложения Spotify, я получу успешную аутентификацию, и скрипт будет работать как задумано (даже когда я запускаю его вручную через s sh).
Если я изменю redirect_uri на https://<name>.herokuapp.com/callback
и в настройках Spotify https://<name>.herokuapp.com/callback
, когда я вхожу в систему с s sh, чтобы попытаться запустить скрипт вручную на сервере, он останавливается на «Вставить ссылку URL-адреса, на который вы были перенаправлены» , это ссылка, по которой мы получаем auth_token
- таким образом, мы не можем завершить скрипт, потому что перенаправление не происходит.
Код:
username = sys.argv[1]
client_id = "<random>"
client_secret = "<random>"
redirect_uri = 'https://name.herokuapp.com/callback'
scope = 'user-library-read playlist-modify-public'
playlist_id = ""
user_id = ""
token = util.prompt_for_user_token(username,
scope,
client_id,
client_secret,
redirect_uri)
Flask код:
@application.route("/")
def init():
return render_template("index.html")
@application.route("/", methods=["POST"])
def handle_data():
info = request.form
spoti = info['spoti']
link = info['yt_link']
x = link.find("list=")
print(link[x+5::])
fin = f"python3 project.py {spoti} {link[x+5::]}"
res = subprocess.check_output(fin, shell=True)
return render_template("index.html",content="SUCCESS, CHECK SPOTI")
if __name__=="__main__":
application.run(debug=True)
И в настройках приложения Spotify я установил redirect_uri
на https://<name>.herokuapp.com/callback
, но я никогда не получу перенаправление?
Любая помощь будет приветствоваться.