0

我正在开发一款 iPhone 游戏,该游戏通过我在 Google App Engine 中构建的后端来维护排行榜和一些社交互动。用户可以在 iPhone 应用程序中通过 facebook 登录。该应用程序通过 HTTP 帖子向我的 Google App Engine 应用程序发送一些用户详细信息,包括访问令牌。

接收请求的处理程序尝试使用访问令牌来检索用户朋友。我正在使用这里的 Github 上的 pythonforfacebook SDK(我之前已经成功):

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分钟前)

过期:从不

有效:真

来源:移动网络 Faceweb

范围:offline_access read_stream

我刚刚更新了我的代码以使用最新发布的 pythonforfacebook 版本,但这没有任何区别。任何想法将不胜感激。

谢谢,

德西

4

1 回答 1

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将是一个包含所有朋友的字典。

于 2012-08-19T23:38:38.010 回答