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

相關問題