2017-02-06 2 views
6

das ist weniger eine Frage als eine Antwort. Ich dachte, ich würde dies mit dir teilen wollen, da ich ein wenig verwirrt war, weil ich so wenig über das eBay OAuth 2.0 in Kombination mit einer C# -Webanwendung fand.Wie bekomme ich ein Zugangs-Token von eBay über OAUTH 2.0 in C#

Ich habe versucht, die RESTsharp-Bibliothek zu verwenden, blieb aber an dem Punkt hängen, an dem der Body-Inhalt erstellt wurde. RESTsharp bevorzugt XML oder JSON, ebay will eine Zeichenkette mit Parametern.

Um Ihnen ein wenig Hilfe zu geben, wenn Sie das gleiche Problem haben, habe ich mich entschlossen, meine Lösung zu posten (ohne RESTsharp).

public class HomeController : Controller { 
    string clientId = "YOUR_CLIENT_ID"; 
    string clientSecret = "YOUR_CLIENT_SECRET"; 
    string ruName = "YOUR_RU_NAME"; 

// die Anfrage umleiten ein Anforderungs-Token

public ActionResult Index() { 
     var authorizationUrl = 
      "https://signin.sandbox.ebay.de/authorize?" + 
      "client_id=" + clientId + "&" + 
      "redirect_uri=" + ruName + "&" + 
      "response_type=code"; 

     Response.Redirect(authorizationUrl); 
     return View(); 
    } 

zu bekommen // Ich benutzte Test-als Methode das Ergebnis in der Steuerung zu testen, verwenden Sie Ihre apropriate Methode hier

public ActionResult Test(string code) 
    { 
     ViewBag.Code = code; 

     // Base 64 encode client Id and client secret 
     var clientString = clientId + ":" + clientSecret; 
     byte[] clientEncode = Encoding.UTF8.GetBytes(clientString); 
     var credentials = "Basic " + System.Convert.ToBase64String(clientEncode); 

     HttpWebRequest request = WebRequest.Create("https://api.sandbox.ebay.com/identity/v1/oauth2/token") 
      as HttpWebRequest; 

     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 

     request.Headers.Add(HttpRequestHeader.Authorization, credentials); 

     var codeEncoded = HttpUtility.UrlEncode(code); 

     var body = "grant_type=authorization_code&code=" + codeEncoded + "&redirect_uri=" + ruName; 

     // Encode the parameters as form data 
     byte[] formData = UTF8Encoding.UTF8.GetBytes(body); 
     request.ContentLength = formData.Length; 

     // Send the request 
     using (Stream post = request.GetRequestStream()) 
     { 
      post.Write(formData, 0, formData.Length); 
     } 

     // Pick up the response 
     string result = null; 
     using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
     { 
      StreamReader reader = new StreamReader(response.GetResponseStream()); 
      result = reader.ReadToEnd(); 
     } 

     ViewBag.Response = result; 

     return View(); 
    } 

Wenn Sie ViewBag.Response ausgeben, sehen Sie den Autorisierungscode. Habe Spaß.

+0

Bewegen Sie Ihre Logik aus Controllern und in Modelle. Sie können dann in Bibliotheken verwendet werden, die wiederum in anderen Projekten verwendet werden können, sei es console, web oder wpf/winforms. – user3791372

+0

auch neue Dokumentation: http://developer.ebay.com/devzone/rest/sell/content/selling-ig/dev-app.html, die eine klarere und prägnante Aufschlüsselung gibt, wie man Schlüssel und mehr mit vollen Erklärungen erhält. – user3791372

+0

In http://developer.ebay.com/devzone/rest/ebay-rest/content/oauth-quick-ref-user-tokens.html ist etwas Material darüber. Ich habe den Bereich "ActionResult Index()" nicht gefunden. Hast du ohne es Corde Tokens bekommen? –

Antwort

0

Wie sieht Ihre Weiterleitungs-URL in der Sandbox aus? Scheint so, als ob die URL https sein sollte. In dieser Phase in der Entwicklungsumgebung und keinen Server mit https. Wie sind Sie damit umgegangen?

Ta

+0

Ich habe ein Zertifikat trotz Problemen mit Browserwarnungen erstellt, um mir in diesem Punkt zu helfen. –

Verwandte Themen