gpt4 book ai didi

python - PyFacebook 无限 session

转载 作者:太空宇宙 更新时间:2023-11-04 01:43:43 25 4
gpt4 key购买 nike

我正在尝试设置一个 cron 任务来读取 Facebook 应用程序的更新。我已提示用户授予离线访问权限,并且已将 session_key 存储在数据库中。

我正在创建一个新的 Facebook 对象,除了 api 和 key 外,我还使用了 session_key(以前存储在 db 中)和 fb uid。当我尝试创建身份验证 token 或执行 API 调用时,出现错误 104:签名不正确

有什么想法、经验、提示吗?

最佳答案

我刚刚写了一个blog entry关于我搜索类似的东西 - 需要编写一个 Python cron 脚本。这是我想出的:

#!/usr/bin/python
import os, sys, optparse, time, json
import facebook

##

USER_SESSION_FILE = os.path.expanduser('fb-user.session')
APP_KEY_FILE = os.path.expanduser('fb-app.keys')

##

def main():
app_keys = open(APP_KEY_FILE).readlines()
fb_api = facebook.Facebook(api_key=app_keys[0].strip(), secret_key=app_keys[1].strip())
opts, args = parse_options()
if args == ['init']:
init(fb_api)
return
session = json.load(open(USER_SESSION_FILE))
fb_api.uid = session['uid']
fb_api.secret = session['secret']
fb_api.session_key = session['session_key']

fb_api.stream.publish(message="test from PyFacebook")


def init(fb_api):
fb_api.auth.createToken()

sys.stdout.write('Opening web page to add application (press ENTER when done)...')
sys.stdout.flush()
fb_api.login()
raw_input()

sys.stdout.write('Asking for offline access now...')
sys.stdout.flush()
fb_api.request_extended_permission('offline_access')
raw_input()

sys.stdout.write('And, finally, asking for permission to publish')
sys.stdout.flush()
fb_api.request_extended_permission('publish_stream')
raw_input()

fb_api.auth.getSession()

if fb_api.session_key_expires != 0:
print """We were granted a temporary key; please wait a minute and run `%s init` again.""" % (sys.argv[0],)
else:
if not os.path.exists(USER_SESSION_FILE):
# Only set restrictive permissions when creating the file
# ourselves.
open(USER_SESSION_FILE, 'w').close()
os.chmod(USER_SESSION_FILE, 0600)
json.dump({
'uid': fb_api.uid,
'secret': fb_api.secret,
'session_key': fb_api.session_key,
},
open(USER_SESSION_FILE, 'w'),
sort_keys=True,
indent=4)


def parse_options():
p = optparse.OptionParser()
return p.parse_args()


if __name__ == '__main__':
sys.exit(main())

关于python - PyFacebook 无限 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2140142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com