2011-01-29 2 views
2

В уведомлении по электронной почте, мы можем увидеть что-то вродеTwitter API: как знать, какое приложение использовалось, чтобы следовать

<username> followed you using <appname>. 

Это здорово. Но есть ли способ узнать имя приложения с помощью API?

+1

Вау, это интересно! Я этого не знал. (Я отключил уведомления по электронной почте) – BoltClock

+0

Обновление, август 2012: это больше не доступно, не так ли? –

+0

@julien_c: что именно? – zerkms

ответ

2

Я просмотрел API REST, и я не мог найти ничего, что бы поддержать это. Я предполагаю, что это функция twitter.com, доступная в API (пока).

наиболее логичные местами я посмотрел были статусов/подписчик и дружбы/показать. В обоих случаях не было ничего окончательного. Проверяя следующие сообщения электронной почты для своей учетной записи, я обнаружил нескольких последователей, которые использовали приложения (например, PeopleBrowr и SocialOomph), чтобы следить за учетной записью. В самые случаях источник на их последних status объект соответствует имени приложения, используемого для меня, но это определенно не было верным.

Таким образом, чтобы ответить на ваш вопрос прямо, нет, я не думаю, что это может быть сделано через API (не, если есть недокументированный метод там, который делает это.)

Я могу, однако, думать способ получить эту информацию. Один из подходов - настроить учетную запись электронной почты, получающую следующие уведомления, для пересылки копии в почтовый ящик, который проверяется автоматическим процессом. Когда появятся сообщения электронной почты, проанализируйте их, чтобы найти имя приложения, которое будет следовать за вами.

Я использовал следующее регулярное выражение (в C#), чтобы найти имя приложения и URI в теле электронной почты в:

Match m = Regex.Match(input, @"followed you using\s*<a[^""]+""(?<appUri>[^""]+)""[^>]+>(?<appName>\w*)</a>"); 

Я использовал m.Groups["appName"].Value вытащить имя приложения, и m.Groups["appUri"].Value, чтобы вытащить URI от матча.

Для того, чтобы связать данные приложения пользователя, я должен был также найти имя экрана с:

Match m = Regex.Match(user, @"\(@<a[^>]+>(?<screenName>\w*)</a>\) is now following"); 

Я использовал m.Groups["screenName"].Value для извлечения значения из матча.

+0

Да, я также подумал о пересылке решения. Но для государственной службы это не способ следовать, поскольку электронная почта может быть просто сфабрикована, поэтому мы не можем доверять этой информации. во всяком случае, +1 – zerkms

+0

@zerkms - Да, это правда. Я просто хотел проиллюстрировать, что это можно сделать, а не через API. Кстати, я думаю, что то, что вы хотите сделать, должно поддерживаться, поэтому я [открыл проблему] (http://code.google.com/p/twitter-api/issues/detail?id=2072) для этого. в коде Google. Не стесняйтесь туда и проголосуйте! – arcain

Смежные вопросы