C# Desk.com和RestSharp(oAuth)

C# Desk.com和RestSharp(oAuth),c#,oauth,restsharp,C#,Oauth,Restsharp,这感觉应该很容易,但…不是。没有用于Desk.com的库肯定没有帮助,而且文档(在我看来)非常薄且缺乏 无论如何,我正在尝试使用RestSharp做一些简单的事情:抓取最近的案例。我使用单访问令牌方法,因为我们不需要与任何用户进行交互 代码如下: var client = new RestClient(); client.Authenticator = RestSharp.Authenticators.OAuth1Authenticator.ForProtecte

这感觉应该很容易,但…不是。没有用于Desk.com的库肯定没有帮助,而且文档(在我看来)非常薄且缺乏

无论如何,我正在尝试使用RestSharp做一些简单的事情:抓取最近的案例。我使用单访问令牌方法,因为我们不需要与任何用户进行交互

代码如下:

        var client = new RestClient();
        client.Authenticator = RestSharp.Authenticators.OAuth1Authenticator.ForProtectedResource("key","secret","token","token secret");
        client.BaseUrl = "http://xxx.desk.com/api/v1/";

        var request = new RestRequest();
        request.Method = Method.GET;
        request.Resource = "cases.json?count=10&status=new";
        request.RequestFormat = DataFormat.Json;

        var result = client.Execute(request);

结果总是说身份验证请求无效且未经授权。尝试了一系列不同的组合,查看了RestSharp库中的测试,并阅读了Desk.com文档中的每一个微不足道的单词。只是不确定下一步要尝试什么。

我只是想说,在遵循了大量关于如何使桌面API与C#一起工作的示例之后,您的示例实际上是唯一有效的示例

我没有使用上面指定的资源进行测试,而是将您的代码与“account/verify_credentials.json”资源一起使用。它为我返回了一个OK响应,因此您的代码可以正常工作。所以,首先……谢谢:)

其次(很抱歉,如果我说的是显而易见的话),我假设您没有使用此处指定的(“key”、“secret”、“token”、“token secret”)参数,而是使用有效的参数。您很可能会这样做,但可能有一个很小的机会,您可能已经找到并复制了来自其他地方的那段代码,可能没有填写您的信息

编辑:从我的第一个答案开始,我就准备了一个小的(非常小的)SDK,可以用来连接到C#中的API并使用它。您可以在此处获取源代码:


希望您能让它正常工作。

您可能已经发现了这一点,但当您尝试将查询字符串添加到RestRequest的资源时,会收到未经授权的消息

我也有同样的问题。Daniel的“account/verify_credentials.json”对我也很有用,所以我开始怀疑它是否与querystring有关

var request = new RestRequest();
request.Method = Method.GET;
request.Resource = "cases.json";
request.RequestFormat = DataFormat.Json;
request.AddParameter("count", 10);
request.AddParameter("status", "new");

解决了我的问题。我试图在资源中设置参数。必须用参数来代替。