这与其说是一个问题,不如说是一个答案。我想我想与您分享这个,因为我有点困惑地发现关于 ebay OAuth 2.0 与 C# web 应用程序结合的信息太少了。
我尝试开始使用 RESTsharp 库,但卡在了创建正文内容的位置。 RESTsharp 更喜欢 XML 或 JSON,ebay 想要一个带参数的字符串。
因此,如果您遇到同样的问题,为了给您一点帮助,我决定发布我的解决方案(不使用 RESTsharp)。
public class HomeController : Controller {
string clientId = "YOUR_CLIENT_ID";
string clientSecret = "YOUR_CLIENT_SECRET";
string ruName = "YOUR_RU_NAME";
//重定向请求以获取请求 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();
}
//我在 Controller 中使用 Test 作为测试结果的方法,请在此处使用您合适的方法
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();
}
如果您输出 ViewBag.Response,您将看到授权码。玩得开心。
最佳答案
您的重定向网址在沙盒中的表现如何?好像 url 应该是 https。在开发环境的这个阶段,没有带 https 的服务器。你是怎么处理的?
他
关于c# - 如何通过 OAuth 2.0 从 ebay 获取访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42065909/