使用RestSharp进行Trello API身份验证

4

我有些困惑如何在我的Windows Phone 7应用程序中使用Trello的OAuth API调用。除了列出端点之外,API并没有真正被记录下来。

以下是我目前的进展:

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 的响应,显然有什么不对劲。
您有什么建议吗?

谢谢,但那也没用。 - Josh Earl
如果您没有使用ExecuteAsync(例如IRestResponse response = client.Execute(request);),它是否有效?这使得第一步(OauthGetRequestToken部分)对我起作用。 - Daniel LeCheminant
3个回答

3

不使用ExecuteAsync似乎可以解决该问题:

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

根据John Sheehan的这篇帖子,在异步情况下(SL和WP),oAuth1尚未得到支持。

有趣的观察。感谢您尝试。不幸的是,Windows Phone仅支持异步调用。但这确实为我的调查提供了一个方向。 - Josh Earl
1
@JoshEarl 看起来在某个时候,OAuth 1.0 不支持异步操作,我不确定现在是否仍然如此。 - Daniel LeCheminant

2

1

将OAuthGetRequestToken替换为authorize。


谢谢回复,约翰。我尝试了那个方法,但仍然收到 404 错误。当我使用 OAuthGetRequestToken 时,RequestUri 被正确地形成,指向 https://trello.com/1/https://trello.com/1/OAuthGetRequestToken,这似乎是正确的。我正在尝试从 RestSharp 集成测试中解决这个问题,但不清楚如何将你在那里做的事情映射到 Trello 的调用。 - Josh Earl
1
没事了,我在手机上的时候没有看到OAuth URL部分。非OAuth版本看起来更简单一些。你考虑过使用那个版本吗? - John Sheehan
好建议。实现起来相当简单,尽管我对从HTML响应中解析令牌并不感到满意。似乎很脆弱。长期来看,OAuth似乎是正确的选择,但现在我会选择更简单的路径。 - Josh Earl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接