为什么我从iOS传递到appEngine的访问令牌无效?

时间:2012-08-19 20:48:00

标签: ios facebook google-app-engine

我正在开发一款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

1 个答案:

答案 0 :(得分:0)

要获得用户的朋友,您可以在没有pythonforfacebook SDK的情况下轻松完成。

https://graph.facebook.com/<username or ID>/friends?access_token=<your token>

该链接将以JSON格式向您提供用户的朋友。因此,如果您导入urllib2json,则可以执行以下操作:

response = urllib2.urlopen(<url above>)
friendsString = response.read()
friends = json.loads(friendsString )

然后friends将成为包含所有朋友的dict