2017-02-06 48 views
6

đây là câu hỏi ít hơn câu trả lời. Tôi nghĩ rằng tôi sẽ muốn chia sẻ điều này với bạn, vì tôi có chút bối rối khi tìm kiếm litte về ebay OAuth 2.0 kết hợp với một ứng dụng web C#.Cách nhận mã thông báo truy cập từ ebay qua oauth 2.0 trong C#

Tôi đã cố gắng bắt đầu sử dụng thư viện RESTsharp, nhưng bị kẹt tại điểm, nơi nội dung nội dung được tạo. RESTsharp thích XML hoặc JSON, ebay muốn có một chuỗi với các tham số.

Vì vậy, để cung cấp cho bạn một chút trợ giúp nếu bạn gặp phải vấn đề tương tự, tôi quyết định đăng giải pháp của mình (không sử dụng RESTsharp).

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

// Chuyển các yêu cầu để có được một yêu cầu mã

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(); 
    } 

// Tôi đã từng thử nghiệm như một phương pháp để kiểm tra kết quả trong bộ điều khiển, sử dụng phương pháp apropriate của bạn ở đây

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(); 
    } 

Nếu bạn xuất ViewBag.Response, bạn sẽ thấy mã ủy quyền. Chúc vui vẻ.

+0

chuyển logic của bạn ra khỏi bộ điều khiển và đưa vào mô hình. sau đó chúng có thể được sử dụng trong các thư viện mà sau đó có thể được sử dụng trong các dự án khác, có thể là giao diện điều khiển, web hoặc wpf/winforms. – user3791372

+0

cũng là tài liệu mới: http://developer.ebay.com/devzone/rest/sell/content/selling-ig/dev-app.html cung cấp phân tích rõ ràng hơn và ngắn gọn về cách nhận khóa và hơn thế nữa với giải thích đầy đủ. – user3791372

+0

Trong http://developer.ebay.com/devzone/rest/ebay-rest/content/oauth-quick-ref-user-tokens.html là một số tài liệu về nó. Tôi không tìm thấy trong phạm vi "ActionResult Index()" của bạn. Bạn có nhận được mã thông báo không có nó không? –

Trả lời

0

Url chuyển hướng của bạn trông như thế nào trong hộp cát? Có vẻ như url phải là https. Trong giai đoạn này trong môi trường dev và không có máy chủ với https. Làm thế nào bạn đối phó với điều đó?

Ta

+0

Tôi đã tạo chứng chỉ mặc dù có vấn đề với cảnh báo trình duyệt để giúp tôi vào thời điểm này. –

Các vấn đề liên quan