1

私は、Oauth1 API を使用して 1 つのサービスの Windows Phone クライアントに取り組んでいます。

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)
                {

このリクエストを実行すると、データ付きの正しいレスポンスを受け取ります。しかし、パラメーターを追加すると (uncomment 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 に答える