Twitter状态更新Windows 8应用程序不断出现未经授权的错误

本文关键字:授权 错误 更新 状态 Windows 应用程序 Twitter | 更新日期: 2023-09-27 18:24:14

我正在开发windows 8应用程序,下面是我使用c#和windows 8 发布到twitter的代码

        const string oauthVersion = "1.0";
        const string oauthSignatureMethod = "HMAC-SHA1";
        var oauthNonce = new Random().Next(123400, 9999999);
        TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
        var oauth_timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();
        var baseString = string.Format(baseFormat,
                                    consumerKey,
                                    oauthNonce,
                                    oauthSignatureMethod,
                                    oauth_timestamp,
                                    oauth_token,
                                    oauthVersion,
                                    Uri.EscapeDataString(status)
                                    );
        baseString = string.Concat("POST&", Uri.EscapeDataString(resourceUrl),
                     "&", Uri.EscapeDataString(baseString));
        IBuffer keyMaterial = CryptographicBuffer.ConvertStringToBinary(ConsumerSecret + "&" + oauth_token_secret, BinaryStringEncoding.Utf8);
        MacAlgorithmProvider hmacSha1Provider = MacAlgorithmProvider.OpenAlgorithm("HMAC_SHA1");
        CryptographicKey macKey = hmacSha1Provider.CreateKey(keyMaterial);
        IBuffer dataToBeSigned = CryptographicBuffer.ConvertStringToBinary(baseString, BinaryStringEncoding.Utf8);
        IBuffer signatureBuffer = CryptographicEngine.Sign(macKey, dataToBeSigned);
        String signature = CryptographicBuffer.EncodeToBase64String(signatureBuffer);
        const string headerFormat = "OAuth oauth_consumer_key='"{0}'", oauth_nonce='"{1}'", " +
                                    "oauth_signature='"{2}'", oauth_signature_method='"{3}'", " +
                                    "oauth_timestamp='"{4}'", oauth_token='"{5}'", " +
                                    "oauth_version='"{6}'"";
        var authHeader = string.Format(headerFormat,
                                Uri.EscapeDataString(consumerKey),
                                Uri.EscapeDataString(oauthNonce.ToString()),
                                Uri.EscapeDataString(signature),
                                Uri.EscapeDataString(oauthSignatureMethod),
                                Uri.EscapeDataString(oauth_timestamp),
                                Uri.EscapeDataString(oauth_token),
                                Uri.EscapeDataString(oauthVersion)
                        );
        var postBody = "status=" + Uri.EscapeDataString(status);
        var httpClient = new HttpClient();
        //httpClient.BaseAddress = new Uri(resourceUrl);
        httpClient.DefaultRequestHeaders.ExpectContinue = false;
        httpClient.DefaultRequestHeaders.Add("Authorization", authHeader);
        byte[] content = System.Text.Encoding.Unicode.GetBytes(postBody);
        var byteArrayContent = new ByteArrayContent(content);
        byteArrayContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
        var response = httpClient.PostAsync(resourceUrl, byteArrayContent);
        var httpResponseMessage = response.Result;
        var isSuccessStatusCode = httpResponseMessage.IsSuccessStatusCode;

它不断给出未经授权的错误,请帮助

Twitter状态更新Windows 8应用程序不断出现未经授权的错误

使用现有的开源Twitter库检查您的代码

Twitterizer

TwitterRT

Linq2Twitter

TweetSharp