4

我们正在制作一款游戏,对于该游戏,我需要 1) 获取私人群组墙上的所有消息 2) 解析自上次检查以来的新消息 3) 其他不相关的内容。

我已经写过了,问题是我的访问令牌有时会过期。如何从 python 脚本中获取新的访问令牌?这个 python 脚本将运行几个星期,我不能不时在半夜醒来去点击一个对话框,授予阅读该组墙的权限。

另外,我在这里找到了这个python代码,我试图用它来获取访问令牌,但我对oauth_args一无所知:

def grabAccessToken ():
  print "grabbing access token..."
  oauth_args = dict(
    client_id     = "000000000000000",
    client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    redirect_uri  = 'http://domain.com/',
    scope         = "user_groups"
  )
  oauth_curl_cmd = [
    'curl',
    'https://graph.facebook.com/oauth/access_token?' + urllib.urlencode(oauth_args)
  ]
  oauth_response = subprocess.Popen(
    oauth_curl_cmd,
    stdout = subprocess.PIPE,
    stderr = subprocess.PIPE
  ).communicate()[0]

  print oauth_response
  try:
      oauth_access_token = urlparse.parse_qs(str(oauth_response))['access_token'][0]
      print "got access token: "+oauth_access_token
      return(oauth_access_token)
  except KeyError:
      return('ENOTOKEN')

它不断响应“{“error”:{“message”:“缺少授权代码”,“type”:“OAuthException”,“code”:1}}”

简而言之:一个独立的 Python 脚本如何能长时间阅读 Facebook 群墙?

4

1 回答 1

4

简而言之:一个独立的 Python 脚本如何能长时间阅读 Facebook 群墙?

没有用户交互,您无法获得新的访问令牌。这就是弃用offline_access 的全部意义所在。

因此,当现有令牌过期时,您必须重新访问您的应用程序以获取新令牌。

我建议将您的长期访问令牌及其到期日期存储在您的数据库中,然后让您的应用在到期日期临近时在后台向您发送电子邮件。选择你认为合适的任何时间框架——提前几天,一两周,任何你喜欢的时间。

于 2012-07-06T08:16:13.110 回答