質問

私は、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)
                {

このリクエストを実行すると、データを含む正しい応答が返されます。しかし、パラメータを追加すると(コメントを解除 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 それで、どうすれば見ることができますか?それとも、このすべての問題を解決するのを手伝ってくれるかもしれません。

役に立ちましたか?

解決

リクエスト構造を壊していると思います...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);

役に立てば幸いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top