Различают ситуацию между регистрацией телефона на Facebook и отказом в разрешении на электронную почту

Я использую omniauth-facebook gem & devise gem для входа в Facebook на моем сайте (веб-сайт Rails). При использовании входа на Facebook я буду запрашивать поле электронной почты и сохранять его в своей базе данных. Пока все отлично работает. Но я обнаружил, что есть две ситуации, когда я не могу получить поля электронной почты.

  1. Когда пользователь регистрирует facebook по телефону и пытается зайти на мой сайт через Facebook, поле возвращенного адреса электронной почты будет нулевым.
  2. Когда пользователь регистрирует facebook по электронной почте, но отклоняет разрешение на электронную почту во время авторизации, возвращаемое поле электронной почты будет нулевым.

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

Очень признателен:)

1 ответ

Посмотрите на этот запрос-и-отзыв

Это вызов

GET /{user-id}/permissions

И в ответ

{
  "data": [
    {
      "permission": "public_profile",
      "status": "granted"
    },
    {
      "permission": "publish_actions",
      "status": "granted"
    },
    {
      "permission": "user_friends",
      "status": "declined"
    }
  ]
}

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

Если разрешение на получение электронной почты предоставлено и в ответных данных отсутствует электронная почта, то это, безусловно, случай регистрации по телефону

Другие вопросы по тегам