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 Error 400: Bad Request». Но, если я скопирую URL-адрес в мой браузер, тогда я получаю строку json с правильным сообщением об ошибке: «У пользователя нет санкционированного приложения ...» (Если я введу неправильный access_token в URL-адрес браузера, тогда я все еще получаю правильное сообщение об ошибке «Недопустимый токен доступа»)

Итак, как я могу изящно проверить, отменил ли пользователь доступ к моему приложению? Я не хочу получать исключение, а скорее правильный ответ ошибки FB. Кажется, что это должно быть возможно, поскольку оно работает, когда я копирую-вставляю url в браузер.

Обратите внимание, что я вообще не меняю свой код. (. Так что это не то, что 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

 Смежные вопросы

  • Нет связанных вопросов^_^