【发布时间】:2013-11-22 00:04:17
【问题描述】:
我正在开发一个使用 Facebook 登录的 Python AppEngine 应用程序。我希望能够访问已登录用户的朋友的简历(他们的“关于我”的信息)。
在 Facebook 开发人员的仪表板上请求/保存了我需要的所有权限的更改后,我可以成功地进行如下调用:
friends = graph.get_connections("me", "friends", fields="name")
for friend in friends["data"]:
print friend["name"]
但尝试访问 docs 中的“bio”字段指定的 about me 会导致关键错误:
friends = graph.get_connections("me", "friends", fields="name,bio")
for friend in friends["data"]:
print friend["bio"]
在本地主机上运行时的 AppEngine 日志:
File "/Users/nicole/aggie-harmony/main.py", line 154, in get
user = self.current_user
File "/Users/nicole/aggie-harmony/main.py", line 108, in current_user
bio = friend["bio"]
KeyError: 'bio'
INFO 2013-11-16 02:59:27,243 module.py:608] default: "GET / HTTP/1.1" 500 -
我已经尝试过其他领域,似乎任何需要访问令牌的东西都会产生一个关键错误(尽管在发布这个问题之前,文档实际上似乎已经更新了几个小时......他们现在建议“其他已明确设置为公开可见性的字段也可以在没有访问令牌的情况下检索”......在我的测试用户中,简历确实是公开的!)
除非我只是在语法方面遗漏了一些东西,否则这确实是一个令牌问题吗?我的应用程序基于示例 here 并且基本上像这样获取/使用访问令牌(之前生成了身份验证内容并存储在其自己的文件中):
...
cookie = facebook.get_user_from_cookie(self.request.cookies, auth.FACEBOOK_APP_ID,
auth.FACEBOOK_APP_SECRET)
...
graph = facebook.GraphAPI(cookie["access_token"])
...
有趣的是,应用程序在登录区域后并没有为用户弹出权限框,这可能支持我的预感......
【问题讨论】:
-
首先检查它是否在 FB Graph Explorer 中工作:developers.facebook.com/tools/explorer 然后尝试在您的应用中实现它。
-
如果您生成了正确的访问令牌,它就可以了。我怀疑我需要以 Python 方式执行此操作,并以某种方式获得与 cookie 合并的权限......但是如何?
标签: python facebook google-app-engine facebook-graph-api facebook-access-token