2012-04-28 2 views
4

Я немного пытаюсь понять, как использовать вызовы API Trello OAuth из моего приложения Windows Phone 7. API не документирован, кроме listing of the endpoints.Проверка подлинности на Trello API с помощью RestSharp

Вот что я до сих пор:

public void OnAuthenticateClicked(object sender, EventArgs e) 
{ 
    const string consumerKey = "mykey"; 
    const string consumerSecret = "mysecret"; 
    const string baseUrl = "https://trello.com/1"; 

    var client = new RestClient(baseUrl) 
    { 
     Authenticator = OAuth1Authenticator.ForRequestToken(consumerKey, consumerSecret) 
    }; 
    var request = new RestRequest("OAuthGetRequestToken", Method.POST); 
    var response = client.ExecuteAsync(request, HandleResponse); 
} 

private void HandleResponse(IRestResponse restResponse) 
{ 
    var response = restResponse; 
    Console.Write(response.StatusCode); 
} 

Я получаю 404 ответ, так что-то не так, очевидно.

Любые предложения?

+0

Попробуйте использовать GET? –

+0

Спасибо, но это тоже не сработало. –

+0

Работает ли он, если вы не используете ExecuteAsync (например, 'IRestResponse response = client.Execute (request);')? Это делает первый шаг (бит «OauthGetRequestToken») для меня. –

ответ

1

Заменить OAuthGetRequestToken с разрешением.

+0

Спасибо за ответ, Джон. Пробовал это, но я все еще получаю '404'. Когда я использовал 'OAuthGetRequestToken',' RequestUri' был правильно сформирован, указав https://trello.com/1/https://trello.com/1/OAuthGetRequestToken, что кажется правильным. Я пытаюсь решить эту проблему из тестов интеграции RestSharp, но неясно, как сопоставить то, что вы делаете там, для вызовов Trello. –

+1

Nevermind, я не видел раздел URL-адреса OAuth, когда был на моем телефоне. Версия, отличная от oauth, выглядит почти проще. Вы считали, что используете это вместо этого? –

+0

Хорошее предложение. Это оказывается довольно простым в реализации, хотя я не сумасшедший о разборке токена из ответа HTML. Кажется хрупким. В долгосрочной перспективе OAuth кажется «правильным» способом, но на данный момент я возьму более простой путь. –

2

Не используя ExecuteAsync, кажется, делает его работу:

RestRequest request = new RestRequest("OAuthGetRequestToken", Method.POST); 
IRestResponse response = client.Execute(request); 
Console.Write(response.StatusCode); 

В один момент «OAuth1 пока не поддерживается в асинхронном режиме сценариев (SL и WP)», в соответствии с this post Джона Шихана.

+0

Интересное наблюдение. Спасибо, что попробовали это. К сожалению, Windows Phone поддерживает только асинхронные вызовы. Но это дает мне вектор для исследования. –

+1

@JoshEarl Кажется, что в один момент async не поддерживался для OAuth 1.0, я не уверен, что это все еще так. –

1

Я думаю, что ваш базовый адрес неверен. Попробуйте следующее:

const string baseUrl = "https://api.trello.com/1";