Autoryzacja api spotify

0

Cześć! Pomógłby mi ktoś jak w tym kodzie zrobić autoryzację spotify by możńa było miec dostęp do API? Czytałem tutorial spotify i próbowałem coś stworzyć, ale C# dopiero uczę się kilka dni i nie mam zbyt bardzo pojęcia. Dzięki za pomoc!

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace SpotifyFinder.Data
{
    public class HttpGrabber
    {
        private string BaseAdres = "https://api.spotify.com/v1/search";

        public async Task<string> TestGet()
        { 
            
            string testRequest = "";

            try
            {


                var request = HttpWebRequest.CreateHttp(BaseAdres + "search");
                request.Method = WebRequestMethods.Http.Get;
                request.ContentType = "application/json; charset=utf-8";

                await Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null)
                        .ContinueWith(task =>
                        {
                            var response = (HttpWebResponse)task.Result;

                            if (response.StatusCode == HttpWebResponse.OK)
                            {
                                StreamReader responseReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                                string responseData = responseReader.ReadToEnd();

                                testRequest = responseData.ToString();
                                responseReader.Close();
                            }



                            response.Close();
                        });

            }

            catch(Exception)
            {

            }
            return testRequest;
        }
    }
}
0

wiem, że base adress zły, ale ogólnie nie mam zbyt pojęcia co dodac do tego kodu by autoryzowało spotify. ID mam wygenerowane i neiw iem jak go użyć.
Jak cos to kod jest z tego poradnika:
Porqadnik był chyba nagrany wtedy gdy Spotify nie wymagało autoryzacji.

1

Musisz wygenerować token, na przykład w taki sposób:
Za "xxxxxxxxxxxxx" wstaw swoje klucze.

        public void GetToken()
        {
            string spotifyClient = "xxxxxxxxxxxxxxxxxxxxxxxx";
            string spotifySecret = "xxxxxxxxxxxxxxxxxxxxxxx";

            WebClient webClient = new WebClient();

            NameValueCollection postparams = new NameValueCollection();
            postparams.Add("grant_type", "client_credentials");

            string authHeader = Convert.ToBase64String(Encoding.Default.GetBytes($"{spotifyClient}:{spotifySecret}"));
            webClient.Headers.Add(HttpRequestHeader.Authorization, "Basic " + authHeader);

            byte[] tokenResponse = webClient.UploadValues("https://accounts.spotify.com/api/token", postparams);

            string textResponse = Encoding.UTF8.GetString(tokenResponse);
            this.tokenData = textResponse.Substring(17, 83);
        }

Wtedy zapytanie powinno wyglądać tak:

                HttpWebRequest request = HttpWebRequest.CreateHttp(baseAddress + "search?q=" + testRequest + "&type=album");
                request.Method = WebRequestMethods.Http.Get;
                request.ContentType = "application/json; charset=utf-8";
                request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + this.tokenData);

Na szybko pisane, funkcjonalność działa :)

0
Nadziany Kret napisał(a):

Musisz wygenerować token, na przykład w taki sposób:
Za "xxxxxxxxxxxxx" wstaw swoje klucze.

        public void GetToken()
        {
            string spotifyClient = "xxxxxxxxxxxxxxxxxxxxxxxx";
            string spotifySecret = "xxxxxxxxxxxxxxxxxxxxxxx";

            WebClient webClient = new WebClient();

            NameValueCollection postparams = new NameValueCollection();
            postparams.Add("grant_type", "client_credentials");

            string authHeader = Convert.ToBase64String(Encoding.Default.GetBytes($"{spotifyClient}:{spotifySecret}"));
            webClient.Headers.Add(HttpRequestHeader.Authorization, "Basic " + authHeader);

            byte[] tokenResponse = webClient.UploadValues("https://accounts.spotify.com/api/token", postparams);

            string textResponse = Encoding.UTF8.GetString(tokenResponse);
            this.tokenData = textResponse.Substring(17, 83);
        }

Wtedy zapytanie powinno wyglądać tak:

                HttpWebRequest request = HttpWebRequest.CreateHttp(baseAddress + "search?q=" + testRequest + "&type=album");
                request.Method = WebRequestMethods.Http.Get;
                request.ContentType = "application/json; charset=utf-8";
                request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + this.tokenData);

Na szybko pisane, funkcjonalność działa :)

Co tu visualowi nie pasuje z tokendata i ToBase64String? (załącznik
Chyba muszę jakąś książkę zakupić bo w sieci jakoś mało jest informacji jakich wyszukuję na temat c# :/

1

Osadziłeś metodę bezpośrednio w namespace zamiast w namespace dać klasę i w niej metodę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1