c# - 使用 RestSharp 从 Twitter API 请求 OAuth 请求 token 返回 404

标签 c# twitter oauth restsharp

我正在尝试使用 RestSharp 检索 Twitter OAuth 请求 token ,但无论我尝试什么,API 似乎都会响应 404。这是我的方法代码:

public void GetRequestToken()
{
    var client = new RestClient("https://api.twitter.com/1");

    var authenticator = OAuth1Authenticator.ForRequestToken(_consumerKey, _consumerSecret);
    authenticator.ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader;

    client.Authenticator = authenticator;

    var request = new RestRequest("/oauth/request_token", Method.POST);
    request.AddHeader("oauth_callback", "http%3A%2F%2Fmarkashleybell.com");
    var response = client.Execute(request);

    var qs = HttpUtility.ParseQueryString(response.Content);

    _token = qs["oauth_token"];
    _tokenSecret = qs["oauth_token_secret"];
}

_consumerKey_consumerSecret 是从 Web.config 设置中检索的,我已仔细检查它们是否正确。 _token_tokenSecret 是包含此方法的类的私有(private)成员变量。

请求的 API URL 正确。该请求似乎根据 Twitter's documentation 传递了所有正确的 header .

我尝试使用 APIGee console进行相同的 API 调用并查看我做错了什么,但即使也会返回 404。

我在这里做错了什么?

最佳答案

卫生部。事实证明,用于 OAuth 操作的 Twitter API URL 实际上与所有其他 Twitter API 调用的 URL 略有不同,并且省略了 API 版本段,因此这是真正的 404。

还有一种更简洁的方法来提供内置于 RestSharp 身份验证器构造函数中的 oauth_callback 参数 - 作为引用,下面的代码可以完美运行:

public void GetRequestToken()
{
    var client = new RestClient("https://api.twitter.com"); // Note NO /1

    client.Authenticator = OAuth1Authenticator.ForRequestToken(
        _consumerKey, 
        _consumerSecret, 
        "http://markashleybell.com" // Value for the oauth_callback parameter
    );

    var request = new RestRequest("/oauth/request_token", Method.POST);
    var response = client.Execute(request);

    var qs = HttpUtility.ParseQueryString(response.Content);

    _token = qs["oauth_token"];
    _tokenSecret = qs["oauth_token_secret"];
}

关于c# - 使用 RestSharp 从 Twitter API 请求 OAuth 请求 token 返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12104603/

相关文章:

facebook - 通过跨域 php 通过多个域连接使用 facebook 进行身份验证?

c# - 需要 CS1001 网站标识符

c# - 使用 Google 登录 - 我们如何验证 .net 中的 Google ID token 服务器端?代码示例缺失,库似乎已弃用

c# - 在特定位置写入数据

c# - 使用静态类使 UI 元素可从 .NET 中的所有类访问是一种好习惯吗?

java - 使用 Jackson API 在 Java 中解析 JSON 文件

java - Spring Security OAuth2 cookie

objective-c - 只需点击一下即可在 Twitter 上发帖 - 就像 Instagram 一样

python - 按推文位置和用户位置抓取推文

python - 如何在 GitHub 上托管的 Python 脚本中保密开发人员 key