Python:检查Facebook用户是否已授予对我的应用的访问权限。错误与#34; HTTP错误400:错误请求"

时间:2015-04-25 07:47:39

标签: python django facebook-graph-api facebook-authentication facebook-permissions

我正在尝试确定用户是否已授予对我的应用程序的访问权限,如果是,则授予其具有哪些权限。这不是在初始注册过程中,但稍后我需要验证用户是否已删除权限。

我运行以下内容:

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字符串。如果我将网址复制粘贴到浏览器中,我就会看到这一点。

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

那么,我怎样才能优雅地检查用户是否已撤销对我的应用的访问权限?我不希望得到异常,而是一个正确的FB错误响应。似乎这应该是可能的,因为当我将url复制粘贴到浏览器中时它可以工作。

请注意,我根本不会更改我的代码。唯一改变的是用户是否已授予对应用程序的访问权限(因此不是网址格式错误。)

1 个答案:

答案 0 :(得分: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}}