2011-11-07 2 views
2

Есть ли надежный способ получить доступ к токен-ошибкам с платформы facebook?Надежность сообщений на Facebook График

Наше приложение iOS/Android должно сохранять сеанс пользователей Facebook. Это прекрасно, за исключением того, что ошибки аутентификации, которые мы получаем из Facebook, кажутся непоследовательными.

По существу, если мы получаем сообщение об ошибке из facebook, мы хотим знать, требует ли это от повторной проверки подлинности пользователя или из-за прерывистой ошибки (то есть, по какой-то причине они ограничены по скорости).

В большинстве случаев ошибки графа facebook содержат код ошибки в тексте сообщения об ошибке.

Некоторые нет.

например

{ "Ошибка": { "сообщение": "Ошибка маркер проверки доступа: Сессия недействительна, так как пользователь вышел из системы.", "Типа": "OAuthException"}}

Не содержит код ошибки, поэтому единственный способ проверить эту ошибку - выполнить сравнение строк в «сообщении». Это кажется чрезвычайно ненадежным способом проверки ошибок.

Кажется ~ почти ~ возможно проверить, не указана ли переменная типа в строке json «OAuthException», за исключением того, что если пользователь ограничен по скорости, тогда это также вызовет исключение OAuthException, но оно не будет 't требует, чтобы пользователь заходил в систему, он требует, чтобы они немного подождали и перестали размещать сообщения.

Я ознакомился с How-To здесь: https://developers.facebook.com/blog/post/500, но это все равно будет иметь проблемы с тем, что мои игры потребуют от пользователей входа в facebook, если они будут чрезмерно восторженными в отношении публикации на стене.

Итак, есть ли надежный способ получить ошибки на платформе facebook?

Прямо сейчас самое лучшее решение, которое я могу найти, - разобрать строку сообщения для кодов ошибок, и если я не найду никакого повторного поиска строки, ищущей конкретные сообщения (например, «Ошибка проверки доступа к токену»), а затем наконец, если я не могу определить, что такое ошибка, просто panic и запишите пользователя.

+0

На данный момент я собираюсь быть консервативным. Я предполагаю, что любое OAuthException требует от пользователя выхода из системы, если я не могу подтвердить, что это исключение не требуется. В основном это означает проверку того, что я знаю как «безопасные» исключения и предоставление обратной связи пользователю. Это все равно означает, что пользователи потенциально получат много «жаль, что вам нужно снова войти в систему». – agenttom

+0

Кроме того, для любого интересующего вас есть короткий список распространенных ошибок: '' Сессия истекло в unix-время SOME_TIME. Текущее время unix равно SOME_TIME.' '' Сессия была признана недействительной, поскольку пользователь изменил пароль. "' '' Ошибка проверки доступа к токену: USER_ID не авторизовало приложение APP_ID "' '' Ошибка проверки токена доступа: сеанс недействителен, поскольку пользователь вышел из системы. "' '" Активный токен доступа должен использоваться для запроса информации о текущем пользователе "' – agenttom

+0

и, наконец, вы можете проверить, содержит ли сообщение об ошибке строку (# 341) для проверки того, что пользователь ограничен. Если они ограничены по скорости, они не требуют повторной проверки подлинности (кажется), но только некоторые отзывы, которые они должны прекратить публиковать так много. – agenttom

ответ

0

К сожалению, я не нашел отличный способ справиться с этим. Лучшее решение, которое я нашел до сих пор, - посмотреть, не является ли ошибка ошибкой OAuthException, сравнить сообщение об ошибке с белым списком «приемлемых сбоев», которые не требуют повторной проверки подлинности, но если ошибка не соответствует какой-либо ошибке в этот белый список, я предполагаю, что пользователь должен повторно аутентифицироваться с помощью Facebook.

Для справки, единственная ошибка, которую я нашел, которая может быть в белом списке, является ошибкой «пользователь с ограничением скорости». Чтобы обнаружить это, я проверяю, содержит ли сообщение об ошибке подстроку «(# 341)», которая является кодом ошибки этой ошибки (не то, что эта ошибка является одной из немногих ошибок, которая содержит код ошибки в сообщении об ошибке тела).

+0

Ошибка «пользователь с ограничениями по скорости» может быть проигнорирован, так как он не требует повторной проверки подлинности пользователя, он требует, чтобы пользователь немного подождал и прекратил слишком много сообщений. «Правильный» способ справиться с этой ошибкой - на мой взгляд - обеспечить обратную связь с пользователем, которую они публикуют слишком быстро, и повторить попытку позже, а затем проигнорировать ошибку. – agenttom

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