fix: redirect uri auf https umstellen mit self-signed cert
This commit is contained in:
+26
-3
@@ -83,7 +83,7 @@ class SpotifyAuth:
|
||||
params = {
|
||||
"client_id": self.client_id,
|
||||
"response_type": "code",
|
||||
"redirect_uri": "http://localhost:8888/callback",
|
||||
"redirect_uri": "https://localhost:8888/callback",
|
||||
"code_challenge_method": "S256",
|
||||
"code_challenge": code_challenge,
|
||||
"state": state,
|
||||
@@ -104,7 +104,27 @@ class SpotifyAuth:
|
||||
|
||||
def _wait_for_callback(self, timeout=300):
|
||||
from http.server import HTTPServer, BaseHTTPRequestHandler
|
||||
import threading
|
||||
import ssl
|
||||
import subprocess
|
||||
|
||||
cert_dir = self.cfg.get("cert_dir", "")
|
||||
if not cert_dir:
|
||||
from pathlib import Path
|
||||
cert_dir = str(Path.home() / ".config" / "spotify-cli" / "certs")
|
||||
self.cfg["cert_dir"] = cert_dir
|
||||
|
||||
cert_file = f"{cert_dir}/cert.pem"
|
||||
key_file = f"{cert_dir}/key.pem"
|
||||
|
||||
import os
|
||||
if not os.path.exists(cert_file) or not os.path.exists(key_file):
|
||||
os.makedirs(cert_dir, exist_ok=True)
|
||||
subprocess.run([
|
||||
"openssl", "req", "-x509", "-newkey", "rsa:2048",
|
||||
"-keyout", key_file, "-out", cert_file,
|
||||
"-days", "365", "-nodes",
|
||||
"-subj", "/CN=localhost"
|
||||
], check=True, capture_output=True)
|
||||
|
||||
received_code = {"code": None, "state": None}
|
||||
|
||||
@@ -128,6 +148,9 @@ class SpotifyAuth:
|
||||
pass
|
||||
|
||||
server = HTTPServer(("localhost", 8888), Handler)
|
||||
ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
|
||||
ctx.load_cert_chain(cert_file, key_file)
|
||||
server.socket = ctx.wrap_socket(server.socket, server_side=True)
|
||||
server.timeout = timeout
|
||||
|
||||
start = time.time()
|
||||
@@ -143,7 +166,7 @@ class SpotifyAuth:
|
||||
resp = requests.post(SPOTIFY_TOKEN_URL, data={
|
||||
"grant_type": "authorization_code",
|
||||
"code": code,
|
||||
"redirect_uri": "http://localhost:8888/callback",
|
||||
"redirect_uri": "https://localhost:8888/callback",
|
||||
"client_id": self.client_id,
|
||||
"code_verifier": code_verifier,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user