我正在开发一款iPhone游戏,通过我在Google App Engine中构建的后端维护排行榜和一些社交互动。用户可以通过iPhone应用程序中的Facebook登录。该应用程序通过HTTP帖子向我的Google App Engine应用程序发送一些用户详细信息,包括访问令牌。
接收请求的处理程序尝试使用访问令牌来检索用户朋友。我正在使用pythonforfacebook SDK(我之前已经取得了成功),这是在Github上:
https://github.com/pythonforfacebook/facebook-sdk
我的GAE应用程序中的相关python代码如下:
def post(self):
at = self.request.get('at')
user = User.get_by_key_name(uid)
if not user: #create previously unknown user
logging.info('Entered unknown user code')
logging.info(at)
logging.info(type(at))
graph = facebook.GraphAPI(at)
facebook_user = graph.get_object("me")
friends = graph.get_connections(facebook_user["id"], "friends")
日志记录命令打印看起来像是一个好的访问令牌,并声明该类型是“Unicode”。当我将logging.info打印的访问令牌复制到GAE日志并将其粘贴到facebook访问令牌调试器时,我得到以下输出:
应用ID:已删除隐私权,但看起来不错
元数据:{“sso”:“iphone-safari”}
用户ID:已删除隐私权但看起来不错
发布时间:1345405177(10分钟前)
过期:从不
有效:正确
来源:Mobile Web Faceweb
范围:offline_access read_stream
我刚刚更新了我的代码以使用最新发布的pythonforfacebook版本,但这没有任何区别。任何想法都会非常感激。
谢谢,
Dessie
答案 0 :(得分:0)
要获得用户的朋友,您可以在没有pythonforfacebook SDK的情况下轻松完成。
https://graph.facebook.com/<username or ID>/friends?access_token=<your token>
该链接将以JSON格式向您提供用户的朋友。因此,如果您导入urllib2
和json
,则可以执行以下操作:
response = urllib2.urlopen(<url above>)
friendsString = response.read()
friends = json.loads(friendsString )
然后friends
将成为包含所有朋友的dict。