2011-11-21 71 views
8

我在写一个访问linkedin的命令行应用程序。我正在使用python-linkedin API。通过Python无界面访问LinkedIn

事情按我的预期工作,但我对认证过程非常抱歉。目前,我需要:

  1. 启动我的应用程序,并等待它打印验证URL
  2. 转到该网址与我的浏览器
  3. 给我的祝福的应用程序,并等待它重定向我到URL
  4. 从URL中提取访问令牌访问令牌到我的应用程序
  5. 做我需要与LinkedIn做
  6. 输入

我不喜欢手动执行步骤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 }) 
+0

您是否根据API对自己进行身份验证,然后提取数据或其他人? –

+0

@Paul:我正在验证自己。 – misha

+0

难道你不能只手动完成一次,然后在本地存储令牌(将其硬编码到python脚本中)? –

回答

2

由于您计划只授权一次,然后为自己的信息调用API,我只需手动检索您的访问令牌,而不用担心自动执行它。

当您授权给定应用程序时,由LinkedIn生成的用户访问令牌是永久性的,除非您在授权屏幕上另行指定。所有你需要做的就是与你的应用程序一起生成授权屏幕,完成整个过程并在成功时回显并存储你的用户访问令牌(令牌和秘密)。一旦你有了,你可以将它们硬编码到一个文件,数据库等等,当调用API时,使用它们。

这是在PHP中,但this demo基本上这样做。只需修改demo.php脚本以根据需要回显您的令牌。