首页 > 解决方案 > 如何在 C# 中使用 twitter API 实现直接消息?

问题描述

我想使用 Twitter API 访问直接消息。我们需要什么来获取 URL、标头、身份验证类型等直接消息?

var fullUrl = "https://api.twitter.com/1.1/direct_messages/events/list.json";
            var _timeSpan = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0);
            var timestamp = Convert.ToInt64(_timeSpan.TotalSeconds).ToString(CultureInfo.InvariantCulture);

            var _oauthNonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(
                 DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture)));

            // Add all the OAuth headers we'll need to use when constructing the hash.
            Dictionary<string, string> data = new Dictionary<string, string>();
            data.Add("oauth_consumer_key", consumerKey);
            data.Add("oauth_signature_method", "HMAC-SHA1");
            data.Add("oauth_timestamp", timestamp);
            data.Add("oauth_nonce", _oauthNonce);
            data.Add("oauth_token", accessToken);
            data.Add("oauth_version", "1.0");

            // Generate the OAuth signature and add it to our payload.
            data.Add("oauth_signature", GenerateSignature(fullUrl, data));

            // Build the OAuth HTTP Header from the data.
            string oAuthHeader = GenerateOAuthHeader(data);

            using (var http = new HttpClient())
            {
                http.DefaultRequestHeaders.Add("Authorization", oAuthHeader);

                var httpResp = await http.GetAsync(fullUrl);
                var respBody = await httpResp.Content.ReadAsStringAsync();

                return respBody;
            }

但得到“授权需要响应”。

标签: c#twittertwitter-oauth

解决方案


请按照此处的说明进行操作。 https://developer.twitter.com/en/docs/authentication/oauth-1-0a/authorizing-a-request

特别是,在创建签名时,您的问题没有创建签名的代码。

按照这个 https://developer.twitter.com/en/docs/authentication/oauth-1-0a/creating-a-signature

如果您使用正确的值,则代码中没有问题。


推荐阅读