Python:检查 Facebook 用户是否已授予访问我的应用程序的权限。失败 "HTTP Error 400: Bad Request"

Python: Check if Facebook user has granted access to my app. Fails with "HTTP Error 400: Bad Request"

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

我运行以下:

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 Error 400: Bad Request"。但是,如果我将 url 复制粘贴到我的浏览器中,那么我会得到一个带有正确错误消息的 json 字符串:"The user has not authorized application..."(如果我在浏览器 url 然后我仍然收到正确的错误消息 "Malformed access token")

那么,我该如何优雅地检查用户是否已撤消对我的应用程序的访问权限?我不想得到一个异常,而是一个适当的 FB 错误响应。似乎这应该是可能的,因为当我将 url 复制粘贴到浏览器中时它会起作用。

请注意,我根本没有更改我的代码。唯一改变的是用户是否已授予对应用程序的访问权限(因此并不是 url 格式不正确。)

HTTPError 本身包含您需要的信息,只需这样做:

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

然后会打印出错误信息:

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