[英]im getting a error 401 unauthorized using the spotify api in c# wpf
Im getting this Error.我收到此错误。 System.Net.WebException: 'The remote server returned an error: (401) Unauthorized.'
System.Net.WebException: '远程服务器返回错误:(401) 未经授权。' Code is provided below.
下面提供了代码。
When i take out the method "PrintUsefulData(api)", everything seems to work fine that method has a http client webrequest.当我取出方法“PrintUsefulData(api)”时,似乎一切正常,该方法有一个 http 客户端 webrequest。 Im trying to request the following https://api.spotify.com/v1/albums .
我试图请求以下https://api.spotify.com/v1/albums 。
static void Main(string[] args)
{
_clientId = string.IsNullOrEmpty(_clientId)
? Environment.GetEnvironmentVariable("my_clientId")//my id
: _clientId;
_secretId = string.IsNullOrEmpty(_secretId)
? Environment.GetEnvironmentVariable("my_secretId") // my id
: _secretId;
AuthorizationCodeAuth auth =
new AuthorizationCodeAuth(_clientId, _secretId, "http://localhost:5002", "http://localhost:5002", Scope.PlaylistReadPrivate | Scope.PlaylistReadCollaborative);
auth.AuthReceived += AuthOnAuthReceived;
auth.Start();
auth.OpenBrowser();
Console.ReadLine();
auth.Stop(0);
}
private static async void AuthOnAuthReceived(object sender,
AuthorizationCode payload)
{
AuthorizationCodeAuth auth = (AuthorizationCodeAuth)sender;
auth.Stop();
Token token = await auth.ExchangeCode(payload.Code);
SpotifyWebAPI api = new SpotifyWebAPI
{
AccessToken = token.AccessToken,
TokenType = token.TokenType
};
PrintUsefulData(api);
}
private static async void PrintUsefulData(SpotifyWebAPI api)
{
RestClient rClient = new RestClient();
rClient.endPoint = "https://api.spotify.com/v1/albums";
string strResponse = string.Empty;
strResponse = rClient.getRequest();
}
}
} }
public enum HttpVerb
{
GET,
POST,
PUT,
DELETE
}
class RestClient
{
public string endPoint { get; set; }
public HttpVerb httpMethod { get; set; }
public RestClient()
{
endPoint = string.Empty;
httpMethod = HttpVerb.GET;
}
public string getRequest()
{
string strResponseVal = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint);
request.Method = httpMethod.ToString();
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
throw new ApplicationException("error code: " + response.StatusCode);
}
using (Stream responseStream = response.GetResponseStream())
{
if (responseStream != null)
{
using (StreamReader reader = new StreamReader(responseStream))
{
strResponseVal = reader.ReadToEnd();
}
}
}
}
return strResponseVal;
}
}
} }
There could be a couple of things going on here but here's my shot at helping based on what code you've posted:这里可能会发生一些事情,但这是我根据您发布的代码提供的帮助:
Token Expiration - If you get a 401 error on a request then you need to use the Refresh Token
which should have been supplied at the point of authorisation to get a new Access Token
.令牌到期- 如果您在请求中收到 401 错误,那么您需要使用
Refresh Token
,该Refresh Token
本应在授权点提供以获取新的Access Token
。 This should apply to ANY call you make to the API.这应该适用于您对 API 进行的任何调用。
Request Parameters - The endpoint you're calling ( https://api.spotify.com/v1/albums
) requires the parameter ids
so the Spotify API knows what 'albums' you would like to return.请求参数- 您正在调用的端点 (
https://api.spotify.com/v1/albums
) 需要参数ids
因此 Spotify API 知道您想要返回什么“专辑” 。 More info: https://developer.spotify.com/documentation/web-api/reference/albums/get-several-albums/
更多信息:
https://developer.spotify.com/documentation/web-api/reference/albums/get-several-albums/
: https://developer.spotify.com/documentation/web-api/reference/albums/get-several-albums/
Another thing to check: - Scope - make sure when you Auth to the API you are setting the required scope you need to perform actions in the future.另一件事要检查: -范围- 确保在对 API 进行身份验证时,您正在设置将来执行操作所需的范围。 I don't think this applies specifically in this case but worth noting.
我认为这不适用于这种情况,但值得注意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.