Как исправить (403) запрещенную ошибку, когда вы пытаетесь прочитать фиды твиттера - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь отобразить пользовательские фиды Twitter на своем веб-сайте. Я получаю сообщение об ошибке 403 в следующем коде.

 var oAuthConKey = "MYKEY";
 var oAuthConSecret="MYSCRET";

            var oAuthUrl = "https://api.twitter.com/oauth2/token";
            var screenname = "nouman_engineer";

            // Do the Authenticate
            var authHeaderFormat = "Basic {0}";

            var authHeader = string.Format(authHeaderFormat,Convert.ToBase64String(Encoding.UTF8.GetBytes(Uri.EscapeDataString(oAuthConKey) + ":" +Uri.EscapeDataString((oAuthConSecret)))
              ));

            var postBody = "grant_type=client_credentials";

            HttpWebRequest authRequest = (HttpWebRequest)WebRequest.Create(oAuthUrl);
            authRequest.Headers.Add("Authorization", authHeader);
            authRequest.Method = "POST";
            authRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
            authRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

            using (Stream stream = authRequest.GetRequestStream())
            {
                byte[] content = ASCIIEncoding.ASCII.GetBytes(postBody);
                stream.Write(content, 0, content.Length);
            }

            authRequest.Headers.Add("Accept-Encoding", "gzip");

            WebResponse authResponse = authRequest.GetResponse();
            // deserialize into an object
            TwitAuthenticateResponse twitAuthResponse;
            using (authResponse)
            {
                using (var reader = new StreamReader(authResponse.GetResponseStream()))
                {
                    JavaScriptSerializer js = new JavaScriptSerializer();
                    var objectText = reader.ReadToEnd();
                    twitAuthResponse = JsonConvert.DeserializeObject<TwitAuthenticateResponse>(objectText);
                }
            }

            // Do the timeline
            var timelineFormat = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=  {0}&include_rts=1&exclude_replies=1&count=5";
            var timelineUrl = string.Format(timelineFormat, screenname);
            HttpWebRequest timeLineRequest = (HttpWebRequest)WebRequest.Create(timelineUrl);
            var timelineHeaderFormat = "{0} {1}";
            timeLineRequest.Headers.Add("Authorization", string.Format(timelineHeaderFormat, twitAuthResponse.token_type, twitAuthResponse.access_token));
            timeLineRequest.Method = "Get";
            WebResponse timeLineResponse = timeLineRequest.GetResponse();
            var timeLineJson = string.Empty;
            using (timeLineResponse)
            {
                using (var reader = new StreamReader(timeLineResponse.GetResponseStream()))
                {
                    timeLineJson = reader.ReadToEnd();
                }
            }

но я получаю ошибку на

Строка 105: WebResponse authResponse = authRequest.GetResponse (); с сообщением, что «Удаленный сервер возвратил ошибку: (403) Запрещено»

Here is My App Details

1 Ответ

0 голосов
/ 11 июня 2019

Я использовал официальную версию TwitterSharp Library, у которой есть некоторые проблемы, поэтому я попробовал неофициальную версию библиотеки TwitterSharp, и она решила эту проблему

...