Токен Spotify Scope не работает при авторизации .NET C#C#

Место общения программистов C#
Ответить
Anonymous
 Токен Spotify Scope не работает при авторизации .NET C#

Сообщение Anonymous »

Я пытаюсь получить токен доступа от Spotify, используя поток кода авторизации с областями, но столкнулся с проблемой, из-за которой запрос токена не работает должным образом. Я могу успешно запросить код авторизации, но когда я пытаюсь обменять его на токен доступа с областями, я получаю ошибку 401 Bad Request с сообщением «Код состояния ответа не указывает на успех: 401 (Bad Request). "
Я не знаю, что я делаю не так, если честно.
Я могу правильно получить токен, но он не работает для этой конечной точки https://api.spotify.com/v1/me (требуется эта область действия user-read-private
user-read-email)

Example of curl by spotify : curl --request GET \
--url https://api.spotify.com/v1/me \
--header 'Authorization: Bearer 1POdFZRZbvb...qqillRxMr2z'

Моя логика:
public async Task GetSpotifyAccessTokenScopes(SpotifyAuthRequestEntity spotifyAuthRequestEntity, string[] scopes)
{
var scopeString = string.Join(" ", scopes);

var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair("grant_type", "client_credentials"),
new KeyValuePair("scope", scopeString)
});

var authenticationString = $"{spotifyAuthRequestEntity.ClientId}:{spotifyAuthRequestEntity.ClientSecret}";
var base64EncodedAuthenticationString = Convert.ToBase64String(Encoding.ASCII.GetBytes(authenticationString));

var request = new HttpRequestMessage(HttpMethod.Post, _tokenUrl)
{
Headers = { Authorization = new AuthenticationHeaderValue("Basic", base64EncodedAuthenticationString) },
Content = content
};

var response = await _httpClient.SendAsync(request);

if (!response.IsSuccessStatusCode)
{
var errorMessage = await response.Content.ReadAsStringAsync();
throw new Exception($"Response status code does not indicate success: {response.StatusCode} ({errorMessage})");
}

var jsonResponse = await response.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize(jsonResponse, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
}

И мой обработчик команд:
public class GetSpotifyAuthTokenScopes : IRequest
{
public string ClientId { get; set; }
public string ClientSecret { get; set; }
}

public class GetSpotifyAuthTokenScopesHandler : IRequestHandler
{
private readonly ISpotifyAuthService _spotifyAuthService;

public GetSpotifyAuthTokenScopesHandler(ISpotifyAuthService spotifyAuthService)
{
_spotifyAuthService = spotifyAuthService;
}

public async Task Handle(GetSpotifyAuthTokenScopes request, CancellationToken cancellationToken)
{
try
{
var spotifyAuthRequest = new SpotifyAuthRequestEntity
{
ClientId = request.ClientId,
ClientSecret = request.ClientSecret
};

var scopes = new[]
{
"user-read-private",
"user-read-email"
};

Console.WriteLine($"Requesting token with scopes: {string.Join(", ", scopes)}");

var token = await _spotifyAuthService.GetSpotifyAccessTokenScopes(spotifyAuthRequest, scopes);

return new ResponseObjectJsonDto()
{
Code = (int)CodeHttp.OK,
Message = "Token generado correctamente.",
Response = token
};
}
catch (Exception ex)
{
return new ResponseObjectJsonDto()
{
Code = (int)CodeHttp.INTERNALSERVER,
Message = ex.Message,
Response = null
};
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... et-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»