我在写一个访问linkedin的命令行应用程序。我正在使用python-linkedin API。通过Python无界面访问LinkedIn
事情按我的预期工作,但我对认证过程非常抱歉。目前,我需要:
- 启动我的应用程序,并等待它打印验证URL
- 转到该网址与我的浏览器
- 给我的祝福的应用程序,并等待它重定向我到URL
- 从URL中提取访问令牌访问令牌到我的应用程序
- 做我需要与LinkedIn做
- 输入
我不喜欢手动执行步骤2到5,所以我想自动化它们。我在想什么做的是:
- 使用模拟客户端像mechanize从步骤1访问URL以上
- 刮屏幕,并自动给我的祝福(可能需要输入用户名和密码 - 我知道这些,所以没关系)
- 等待被重定向抢重定向URL
- 从URL
- 利润中提取令牌!
提问时间:
- 放眼望去,this guy right here on SO试图做同样的事情,但被告知,这是不可能的。为什么?
- 然后,this guy here does它在Jython和HtmlUnit中。应该可以用直接的Python和机械化,对吧?
- 最后,有没有人看到直接Python和机械化(或任何其他无头浏览器替代)的解决方案?我不想重新发明轮子,但必要时将其编码。
编辑:
代码来初始化令牌(使用公认的答案的方法):
api = linkedin.LinkedIn(KEY, SECRET, RETURN_URL)
result = api.request_token()
if not result:
print 'Initialization error:', api.get_error()
return
print 'Go to URL:', api.get_authorize_url()
print 'Enter verifier: ',
verifier = sys.stdin.readline().strip()
if not result:
print 'Initialization error:', api.get_error()
return
result = api.access_token(verifier=verifier)
if not result:
print 'Initialization error:', api.get_error()
return
fin = open('tokens.pickle', 'w')
for t in (api._request_token, api._request_token_secret,
api._access_token, api._access_token_secret):
pickle.dump(t, fin)
fin.close()
print 'Initialization complete.'
代码使用令牌:
api = linkedin.LinkedIn(KEY, SECRET, RETURN_URL)
tokens = tokens_fname()
try:
fin = open(tokens)
api._request_token = pickle.load(fin)
api._request_token_secret = pickle.load(fin)
api._access_token = pickle.load(fin)
api._access_token_secret = pickle.load(fin)
except IOError, ioe:
print ioe
print 'Please run `python init_tokens.py\' first'
return
profiles = api.get_search({ 'name' : name })
您是否根据API对自己进行身份验证,然后提取数据或其他人? –
@Paul:我正在验证自己。 – misha
难道你不能只手动完成一次,然后在本地存储令牌(将其硬编码到python脚本中)? –