【发布时间】:2012-03-30 01:29:05
【问题描述】:
我正在为一项使用 Oauth1 API 的服务开发 Windows 手机客户端。
在 API 文档中我有这样的内容:
url: http://example.com/iphone/json/users/
method: GET
参数: page_num=[int] - 页码,>=1,默认=1。
对于默认页面编号,一切正常:
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 那么,我该如何查看呢?或者也许你可以帮我解决这一切 问题?
【问题讨论】:
-
你能发布更完整的工作版本和非工作版本的例子吗?
-
你是如何生成签名的?
-
约翰,我更新了帖子。马特,签名是由 API 生成的,我正在尝试找到一种方法,如何在调试器中查看它:)
-
您可以看到使用 Fiddler 之类的东西生成的签名。他们的签名算法可能与 RestSharp 中的不匹配(我已经看到一些 API 有细微的差异)。此外,如果您只是将查询字符串值硬编码到 RestRequest 构造函数 URL 参数中,是否可以解决问题?
-
OAuth 1 需要 url 参数和 form-urlencoded 参数来生成签名
标签: windows-phone-7 oauth restsharp