Введение
С помощью LinkedIn Company Lookup API можно получить информацию о компании зарегистрированной на LinkedIn. Искать можно по ключевым словам, а можно и с помощью ID. Например, GET запрос
http://api.linkedin.com/v1/companies::(1337)
вернет информацию о самой компании LinkedIn. Весьма удобно, что через запятую можно указать сразу несколько ID, однако при этом стоит учитывать что слишком много ID указать в одном запросе также не получится из-за ограничения на размер самого запроса.
Также существуют органичения на количество запросов в день, которые устанавливаются как для приложения так и для отдельного пользователя. В частности, для получения информации о компаниях лимиты следующие:
Таким образом, как видно на рисунке выше, LinkedIn не позволяет одному пользователю получить информацию о более чем 500 компаниях в течении одного дня. При этом важно отметить, что считается именно количество запрашиваемых компаний, а не запросов (как говорилось выше, в одном запросе может запрашиваться информация сразу о нескольких компаниях).
Как это должно работать
Для авторизации запросов LinkedIn использует oAuth, причем на данный момент поддерживаются обе версии: OAuth 2.0, а также и более старая OAuth 1.0a. В случае использования версии 1.0a кратко механизм можно описать так:
- Делаем запрос к API чтобы получить ссылку для автороризации приложения, при этом также создается request_token.
- Необходимо открыть ссылку в браузере и вручную разрешить доступ для приложения.
- Сгенерированый ранее request_token используется для получения access_token (с помощью вызова соответствующего метода API).
Таким образом шаги, описанные выше, необходимо проделать только один раз, а access_token должен храниться в надежном месте и использоваться для всех последующих вызовов методов API. В этом случае мы и столкнемся с тем, что используя одного пользователя не сможем получить более 500 компаний в день.
Как это работало на самом деле
В реальности я попытался не получать access_token, а вызывать методы API используя request_token, сгенерированный на шаге 1 (шаг 2 в любом случае обязательный, иначе request_token будет непригоден). И в итоге я обнаружил, что методы API успешно работали и с request_token первые 5 минут (потом истекает его время жизни). Кроме того при таком способе не действовал лимит для пользователя, только лимит на 100 000 компаний в день для приложения. Однако тут на помощь приходит создание нескольких приложений. Очевидным минусом такого подходя является необходимость авторизации приложения каждые 5 минут. Но при должном уровне автоматизации и интеграции с браузером это не было большой проблемой. В итоге за пару дней неспешной работы простенького кода была скачана база с около 5 млн компаний хранящихся на LinkedIn.
Рекомендация
Не стоит давать возможность вызывать методы API (кроме метода получения access_token) с помощью временного request_token. Это рекомендация прописана в секции 6 OAuth 1.0а
P.S.: На текущий момент LinkedIn уже поправил ситуацию в соответствии с приведенной рекомендацией.
Автор: Ehuhaa