2016-04-04 16 views
0

Spotify API'sinden erişim belirteci almak için çalışıyorum ancak bu dosyayı alamıyorum. Yetkilendirme kodunu alabildikten ve süreci takip edip, denedikten sonra 500 Dahili Sunucu Hatası alıyorum. İşte kodum:Spotify API'sı Belirti Alımında 500 dahili sunucu hatası alma

using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.IO; 
using System.Linq; 
using System.Net; 
using System.Text; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace SpotifyAPI 
{ 
    public partial class Callback : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      string code = Request.QueryString["code"]; 
      string state = Request.QueryString["state"]; 

      // Generate URL with authorization code 
      string url = "https://accounts.spotify.com/api/token?grant_type=authorization_code&code=" + code + "&redirect_uri=http://localhost:64270/Callback.aspx"; 

      // get Client ID and Secret 
      string clientId = ((Site1)this.Master).getClientId(); 
      string clientSecret = ((Site1)this.Master).getClientSecret(); 

      // generate encoded header string for token request 
      string preAuthorizationCode = clientId + ":" + clientSecret; 
      string postAuthorizationCode = Base64Encode(preAuthorizationCode); 
      Debug.WriteLine("Post Authorization Code is: " + postAuthorizationCode); 

      var webrequest = (HttpWebRequest)WebRequest.CreateHttp(url); 
      webrequest.Method = "POST"; 

      WebHeaderCollection myWebHeaderCollection = webrequest.Headers; 
      myWebHeaderCollection.Add("Authorization: Basic " + postAuthorizationCode); 

      HttpWebResponse myHttpWebResponse = (HttpWebResponse)webrequest.GetResponse(); 

      Stream responseStream = myHttpWebResponse.GetResponseStream(); 
      var reader = new StreamReader(responseStream); 
      string result = reader.ReadToEnd(); 
     } 

     public static string Base64Encode(string plainText) 
     { 
      var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText); 
      return System.Convert.ToBase64String(plainTextBytes); 
     } 
    } 
} 

Herhangi bir yardım için teşekkür ederiz. Teşekkürler! dokümantasyon Sen

"grant_type", "kod" gönderme ve POST organı olarak parametreler "redirect_uri" zorunda

https://developer.spotify.com/web-api/authorization-guide/

belirtildiği gibi

+0

POST to Spotify'a kadar mı yoksa bitiş çizgisine mi geçiyor? –

+0

hattı, bu satırdaki değişikliklerden önce ve sonra işlem sırasında kesiliyor: HttpWebResponse myHttpWebResponse = (HttpWebResponse) webrequest.GetResponse(); – Arrivedacci

cevap

0

. Spotify bir hata vermesi için onları url parametreleri olarak gönderiyorsunuz.

+1

teşekkürler, string.Format kullanarak post bedeninde olmak için bu parametreleri değiştirdi. Daha sonra orjinal dizeyi "https://accounts.spotify.com/api/token" olarak değiştirdi. Bunu çözeceğini düşünmüştüm ama şimdi 400 hata veriyor [Kötü İstek]. Parametrelerimi kontrol ettim Ne olduğunu bilmiyorum, sunucu yanıtı çok belirsiz olduğundan, daha iyi bir şekilde sorun gidermek için herhangi bir yol var mı? – Arrivedacci

+1

Başka bir rota denemeye karar verdim ve istemci kimliğini ve istemci sırrını vücuttaki post parametresi olarak ekledim. dokümantasyon önerildi.Bu iki temel 64 biçiminde kodlama ile ilgili sorunun ne olduğundan emin değilim ama durum böyle görünüyor. – Arrivedacci

İlgili konular