Как я могу использовать курсоры для итерации при вызове twitter api? Я пытаюсь получить местоположение моих подписчиков Twitter, используя вызов GET followers/list
API. Я сделал все связанные с аутентификацией вещи в своем приложении.
Это то, что я сделал до сих пор
var resource_url = "https://api.twitter.com/1.1/followers/list.json";
var cursor = "-1";
var api_path = resource_url;
do {
var url_with_cursor = api_path + "&cursor=" + cursor;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url_with_cursor);
request.Headers.Add("Authorization", authHeader);
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
WebResponse response = request.GetResponse();
string result = new StreamReader(response.GetResponseStream()).ReadToEnd();
JObject j = JObject.Parse(result);
cursor = j["next_cursor_str"].ToString();
Console.WriteLine(cursor);
}
while ( cursor != "0" );
Но когда я запускаю вышеуказанный код, я получаю исключение: "Удаленный сервер возвратил ошибку: (401)" Несанкционированный ". в следующей строке моего кода:
WebResponse response = request.GetResponse();
Это означает, что с ответом что-то не так.
Я нигде не видел подходящего примера о том, как получать данные twitter с помощью курсоров для навигации по коллекциям, за исключением сайта разработчика.
Twitter требует, чтобы вы аутентифицировали/авторизировали с помощью api, прежде чем вам удастся извлечь данные. Вам нужно будет выполнить их документацию, чтобы получить токен OAuth.
Кроме того, может быть проще использовать библиотеку-обертку вместо прямого перехода на твиттер. Twitter перечисляет несколько для.Net: https://dev.twitter.com/docs/twitter-libraries
Например, tweetSharp:
using TweetSharp;
// In v1.1, all API calls require authentication
var service = new TwitterService(_consumerKey, _consumerSecret);
service.AuthenticateWith(_accessToken, _accessTokenSecret);
var tweets = service.ListTweetsOnHomeTimeline(
new ListTweetsOnHomeTimelineOptions());
foreach (var tweet in tweets)
{
Console.WriteLine("{0} says '{1}'", tweet.User.ScreenName, tweet.Text);
}
That means there's something wrong with the response.
- Да, это то, что указывает на исключение. Так что же является исключением?