Linq to Twitter Authenticated But Getting 215 “Bad Authentication Data”

元气小坏坏 提交于 2019-12-14 04:08:35

问题


I have been using Linq to Twitter for Authenticating with OAuth for the Twitter API 1.1. I set my credentials and then pass them to Linq to Twitter which states I that isAuth returns true. However, at run time I receive at 215 "Bad Authentication Data" error. Has anyone else had this problem?

  var auth = new SingleUserAuthorizer
        {
            Credentials = new InMemoryCredentials
            {
                ConsumerKey = TwitterSettings.ConsumerKey,
                ConsumerSecret = TwitterSettings.ConsumerKeySecret,
                OAuthToken = TwitterSettings.AccessToken,
                AccessToken = TwitterSettings.AccessTokenSecret,
            }
        };
        auth.Authorize();
    }

And here is the if else that is stating I am authorized:

        if (auth == null || !auth.IsAuthorized)
        {

        }
        // If Twitter Authorizes Application 
        if (auth.IsAuthorized && i == 1)
        {

            HttpClient client = new HttpClient();
            HttpResponseMessage response = await client.GetAsync(new Uri("https://api.twitter.com/1.1/search/tweets.json?q=%23freebandnames&since_id=24012619984051000&max_id=250126199840518145&result_type=mixed&count=4"));
            string json = await response.Content.ReadAsStringAsync();

            JObject obj = JObject.Parse(json);
            var jsonResults = obj["results"];

            await JsonConvert.DeserializeObjectAsync<List<Tweet>>(jsonResults.ToString());

        }

I am able to get into the auth.IsAtuhorized portion of the code but the response is returning a 215 error. Also I know my URI is correct because I copied it straight from the Twitter API 1.1 example page to test the call. Thanks in Advance


回答1:


You're using the authorizer properly, but then you aren't using LINQ to Twitter to make your query. You're using HttpClient instead and there isn't a relationship between the two APIs. Here's a example of how to perform a Search with LINQ to Twitter:

    var srch =
        (from search in twitterCtx.Search
         where search.Type == SearchType.Search &&
               search.Query == "LINQ to Twitter" &&
               search.Count == 7
         select search)
        .SingleOrDefault();

    Console.WriteLine("\nQuery: {0}\n", srch.SearchMetaData.Query);
    srch.Statuses.ForEach(entry =>
        Console.WriteLine(
            "ID: {0, -15}, Source: {1}\nContent: {2}\n",
            entry.StatusID, entry.Source, entry.Text));

You can visit the LINQ to Twitter Search Documentation for more info on available parameters.

Update, Here's an asynchronous sample:

    (from search in twitterCtx.Search
     where search.Type == SearchType.Search &&
           search.Query == QueryTextBox.Text
     select search)
    .MaterializedAsyncCallback(asyncResponse =>
        Dispatcher.BeginInvoke(() =>
        {
            if (asyncResponse.Status != TwitterErrorStatus.Success)
            {
                MessageBox.Show("Error during query: " + asyncResponse.Exception.Message);
                return;
            }

            Search search = asyncResponse.State.SingleOrDefault();
            var tweets =
                (from status in search.Statuses
                 select new Tweet
                 {
                     UserName = status.User.Identifier.ScreenName,
                     Message = status.Text,
                     ImageSource = status.User.ProfileImageUrl
                 })
                .ToList();

            SearchListBox.ItemsSource = tweets;
        }));


来源:https://stackoverflow.com/questions/16426825/linq-to-twitter-authenticated-but-getting-215-bad-authentication-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!