Ответ FB.login () противоречив - PullRequest
0 голосов
/ 12 марта 2012

Большинство людей, которые пытаются войти через Facebook, не имеют никаких проблем, но около 5% людей, которые пытаются зарегистрироваться, не могут.Я полагаю, что проблема в том, что некоторые люди не имеют определенной информации в ответе, который я получаю от Facebook.Почему некоторые люди не имеют адрес электронной почты и местоположение в своем ответе, даже если я запросил разрешения электронной почты и user_location?

1 Ответ

2 голосов
/ 12 марта 2012

Я посмотрел ваш javascript и увидел пару вещей, которые вы должны проверить:

Когда вы инициализируете javascript SDK, вы устанавливаете cookie = false и status = false. Большинство примеров, которые я видел, устанавливают это как true. Это может не иметь ничего общего с 5% -ными исключениями, которые вы видите, но я не понимаю, как было бы вредно установить их в значение true, и это могло бы помочь. Попробуйте и посмотрите, имеет ли это значение.

Большая проблема, которую я вижу, заключается в том, что ваш код предполагает, что разрешения предоставлены. Вам действительно нужно проверить объект ответа в обратном вызове FB.login. Пользователь, возможно, не вошел в систему, и он, возможно, отказал в некоторых разрешениях. Вам нужно проверить объект ответа, чтобы увидеть, есть ли в нем ошибка.

Вам нужно будет запросить таблицу разрешений (fql) или выполнить команду get / me / permissions, чтобы узнать, какие разрешения они предоставили. Было бы неплохо, если бы объект ответа на обратный вызов FB.login сообщал вам, что было предоставлено или отказано, но это не так.

Также я считаю, что есть случаи, когда у людей нет электронной почты, зарегистрированной в Facebook или в другом месте.

Подводя итог: вы не можете доверять тому, что вы получите то, о чем просите, вам нужно проверить объект ответа и изящно обработать исключения, повторно выполнив проверку подлинности с сообщением, указывающим, почему вы повторяете запрос.

Еще одна вещь, которую вы, возможно, захотите рассмотреть, - это средство ведения журнала на стороне клиента, такое как log4javascript (или сверните свое собственное), которое собирает дополнительную информацию об этих исключениях. Например, может быть шаблон для конкретного браузера, который плохо обрабатывает вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...