【发布时间】:2018-12-14 03:52:05
【问题描述】:
我正在尝试通过 API 访问 LinkedIn 数据(我没有应用程序,我只想访问公司数据 - 或查看可以访问的内容)。关于此主题还有其他问题,但大多数都已过时(使用 LinkedIn 当前授权流程之前的软件包)。
我关注了LinkedIn关于授权的文档:https://developer.linkedin.com/docs/oauth2
我创建了一个应用程序(使用无意义的网站 url,因为我没有网站)。这给了我一个客户端 ID 和客户端密码。
使用来自 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']
此链接将我带到一个我“给予许可”的网站,然后显示一个 pin 码。使用此引脚(此处称为 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 一起工作、授权如何工作或如何知道我需要的 api url。
如果相关,我体验过网络抓取(使用请求和漂亮的汤来解析),但没有使用 API。
【问题讨论】:
标签: python python-3.x oauth-2.0 linkedin linkedin-api