문제

OAUTH1 API를 사용하여 Windows Phone Client에서 작업하고 있습니다.

API Docs에서는 다음과 같습니다.

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

method: GET

매개 변수 : page_num= [int] - 페이지 번호,>= 1, default= 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.addparametmer ( "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)
                {
.

메시지가 "잘못된 서명"을받습니다.String 매개 변수도 시도했습니다 :

        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