2

尝试刷新我的 Spotify 令牌时,我不断收到 500 个错误。

错误:{“错误”:“服务器错误”}

要求:

POST https://accounts.spotify.com/api/token HTTP/1.1 授权:基本 ZWM .....WI= 主机:accounts.spotify.com 内容长度:170 预期:100-继续连接:保持活动

grant_type=refresh_token&refresh_token=AQA9.....p5qc

代码:

string request = "https://accounts.spotify.com/api/token";
        StringBuilder sbOutput = new StringBuilder();
        StringBuilder sbBody = new StringBuilder();
        sbBody.Append("grant_type=refresh_token");
        sbBody.Append("&refresh_token=" + spotifyToken.RefreshToken);
        //sbBody.Append("&client_id=" + "ec41.....19");
        //sbBody.Append("&client_secret=" + "9b...5b");

        string clientIdAndSecret = "ec....19:9ba.....e5b";

        var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(clientIdAndSecret);
        string clientIdAndSecretBase64 = System.Convert.ToBase64String(plainTextBytes);

        Dictionary<string, string> headers = new Dictionary<string, string>();
        headers["Authorization"] = "Basic " + clientIdAndSecretBase64;

        response = SendRequest("POST", request, sbBody.ToString(), headers, ref sbOutput);

发送请求方法:

if (!string.IsNullOrEmpty(url))
        {
            using (var client = new HttpClient())
            {
                //Create request URI
                Uri requestURI = new Uri(url);

                //Create Stream from the content
                Stream bodyStream = new MemoryStream(Encoding.UTF8.GetBytes(body ?? ""));
                HttpContent requestContent = new StreamContent(bodyStream);

                //Headers
                foreach (KeyValuePair<string, string> pair in headers)
                {
                    client.DefaultRequestHeaders.Add(pair.Key, pair.Value);
                }

                Task<HttpResponseMessage> responseTask;

                switch (httpWebRequestMethod.ToUpper())
                {
                    case "POST":
                        responseTask = client.PostAsync(requestURI, requestContent);
                        break;
                    case "GET":
                        responseTask = client.GetAsync(requestURI);
                        break;
                    case "DELETE":
                        responseTask = client.DeleteAsync(requestURI);
                        break;
                    case "PUT":
                        responseTask = client.PutAsync(requestURI, requestContent);
                        break;
                    default:
                        return HttpStatusCode.Unused;
                }

                //Lets wait
                responseTask.Wait();

                if (responseTask.IsCompleted)
                {
                    HttpResponseMessage response = responseTask.Result;

                    string resultBody = response.Content.ReadAsStringAsync().Result;

                    sbOutput.Append(resultBody);

                    return response.StatusCode;
                }
            }
        }

        return HttpStatusCode.Unused;
    }

任何帮助将不胜感激,因为我准备把头撞到墙上!

谢谢 :)

4

0 回答 0