Я пытаюсь получить доступ к данным LinkedIn через API (у меня нет приложения, я просто хочу получить доступ к данным компании - или посмотреть, что можно получить). Здесь есть другие вопросы по этой теме, но большинство из них устарели (с использованием пакетов, которые предшествуют текущему процессу авторизации в LinkedIn).
Я следовал документации LinkedIn по авторизации: https://developer.linkedin.com/docs/oauth2
Я создал приложение (используя бессмысленный URL-адрес веб-сайта, поскольку у меня нет веб-сайта). Это дало мне идентификатор клиента и секрет клиента.
Использование (устаревшего) материала из LinkedIn (https://github.com/linkedin/api-get-started/blob/master/python/tutorial.py) Я написал:
import oauth2 as oauth
import urllib.parse as urlparse
consumer_key = 'my client id e.g. sjd6ffdf6262d'
consumer_secret = 'my customer secret e.g. d77373hhfh'
request_token_url = 'https://api.linkedin.com/uas/oauth/requestToken'
access_token_url = 'https://api.linkedin.com/uas/oauth/accessToken'
authorize_url = 'https://api.linkedin.com/uas/oauth/authorize'
consumer = oauth.Consumer(consumer_key, consumer_secret)
client = oauth.Client(consumer)
resp,content = client.request(request_token_url, "POST")
request_token = dict(urlparse.parse_qsl(content))
clean_request_token = {}
for key in request_token.keys():
clean_request_token[key.decode('ascii')] = request_token[key].decode('ascii')
request_token = clean_request_token
print ("Go to the following link in your browser:")
print ("%s?oauth_token=%s" % (authorize_url, request_token['oauth_token']
По этой ссылке я перехожу на веб-сайт, где я «даю разрешение», а затем мне показывают пин-код. Используя этот пин (здесь он называется oauth_verifier):
oauth_verifier = 12345
token = oauth.Token(request_token['oauth_token'],
request_token['oauth_token_secret'])
token.set_verifier(oauth_verifier)
client = oauth.Client(consumer, token)
content = client.request(access_token_url,"POST")
access_token = dict(urlparse.parse_qsl(content[1]))
clean_access_token = {}
for key in access_token.keys():
clean_access_token[key.decode('ascii')] = access_token[key].decode('ascii')
access_token = clean_request_token
token = oauth.Token(key=access_token['oauth_token'],secret=access_token['oauth_token_secret'])
client = oauth.Client(consumer, token)
response = client.request("http://api.linkedin.com/v1/companies/barclays")
Этот ответ имеет код 401 из-за того, что «токен, использованный в запросе OAuth, был отозван».
Основные проблемы:
- Я не совсем понимаю, как работают API, как они работают с Python, как работает авторизация или как узнать URL API, который мне нужен.
В соответствующих случаях у меня есть опыт просмотра веб-страниц (с использованием запросов и красивого супа для анализа), но не с API.