1

我正在使用 Oauth1 API 为一项服务开发 Windows 手机客户端。

在 API 文档中,我有这样的内容:

url: http://example.com/iphone/json/users/

method: GET

参数:page_num=[int] - 页码,>=1,默认值=1。

对于默认页面 num 一切正常:

        RestClient HabraClient = new RestClient("http://habrahabr.ru");
        HabraClient.Authenticator = OAuth1Authenticator.ForProtectedResource("xxx", "yyyyyy", App.Tokens.Key, App.Tokens.Secret);
        var TokenRequest = new RestRequest("/iphone/json/users/", Method.GET);

        HabraClient.ExecuteAsync(TokenRequest, (response =>
        {
            try
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {

当我执行此请求时,我会收到正确的数据响应。但是如果我添加参数(取消注释 TokenRequest.AddParameter("page_num", 2); )我会收到“无效签名”。我试图发送 int 和 string 参数。

        var TokenRequest = new RestRequest("/iphone/json/users/", Method.GET);

        TokenRequest.AddParameter("page_num", 2);

        HabraClient.ExecuteAsync(TokenRequest, (response =>
        {
            try
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {

我收到消息“无效签名”。我也尝试过字符串参数:

        TokenRequest.AddParameter("page_num", "2");

API 提供商告诉我,我的签名基本字符串http://oauth.net/core/1.0/#sig_base_example有问题 那么,我该如何查看呢?或者也许你可以帮我解决所有这些问题?

4

1 回答 1

0

我认为您正在破坏请求结构...最好通过 Fiddler 检查请求,但尝试编写类似

var TokenRequest = new RestRequest("/iphone/json/users/?page_num=2", Method.GET);

代替

var TokenRequest = new RestRequest("/iphone/json/users/", Method.GET);

TokenRequest.AddParameter("page_num", 2);

希望,它会有所帮助。

于 2012-03-29T17:29:05.577 回答