3

我试图确定用户是否已经授权访问我的应用程序,如果有的话,它具有哪些权限。这不是在最初的注册过程中,但后来当我需要验证用户没有删除权限。Python:检查Facebook用户是否允许访问我的应用程序。 “HTTP错误400:错误的请求”失败

我运行以下命令:

access_token = "users_access_token"; # saved when user signed up using FB 
url = "https://graph.facebook.com/v2.0/me/permissions/?access_token="+access_token 
response = urllib2.urlopen(url) 

如果用户允许访问,则响应是一个JSON字符串权限。这与我看看是否将url复制粘贴到浏览器中是一样的。

但是,如果用户没有授予访问权限(即在初始注册后删除了我的应用程序),则会出现错误:“HTTP错误400:错误的请求”。但是,如果我将url复制粘贴到浏览器中,那么我会得到一个带有适当错误消息的json字符串:“用户尚未授权应用程序...”(如果我在浏览器url中输入了错误的access_token,一个适当的错误消息“格式错误的访问令牌”)

那么,我该如何优雅地检查用户是否已撤销对我的应用程序的访问?我不想得到一个异常,而是一个正确的FB错误响应。看起来这应该是可能的,因为它在我复制粘贴到浏览器中时起作用。

请注意,我根本不改变我的代码。 (所以它不是该URL是错误的),唯一的变化就是用户是否有权访问应用程序

回答

1

HTTPError本身就含有你所需的信息,只是这样做:

try: 
    response = urllib2.urlopen(url) 
except urllib2.HTTPError as e: 
    print(e.read()) 

然后它会打印出错误信息:

{"error":{"message":"Invalid OAuth access token.","type":"OAuthException","code":190}} 
+0

完美!谢谢。 – user984003

相关问题