Я делаю логин с Facebook на моем сайте.
В отличие от большинства входов в систему, которые я вижу …. мои пользователи, возможно, уже зарегистрированы и позже захотят подключиться к своему Facebook. Если они подпрыгивают и нажимают «Войти через Facebook», когда у них уже есть учетная запись на веб-сайте, они могут в конечном итоге создать новую учетную запись … которая нам не нужна.
Вместо этого я настроил его, чтобы они входили в систему с Facebook … и по возвращении проверьте, существует ли адрес электронной почты fbID или fb в текущей базе данных. Если нет … тогда предоставьте им экран входа в систему, чтобы войти нормально. В это время они соединят две учетные записи. Я проводил исследования в течение достаточно долгого времени, и я очень удивлен, что я не вижу этот метод размещен повсюду в Интернете. Кажется логичным для меня.
Чтобы было понятно, я использую FB JS SDK, чтобы выполнить вход с помощью всплывающего окна Facebook. Затем после перенаправления я использую FB PHP SDK для получения идентификатора пользователя fb и информации о пользователях из Facebook.
Хорошо … итак … одна проблема, с которой я столкнулся, это то, что после входа в систему с помощью Facebook … и затем перенаправления обратно на обычный экран входа в систему, проверка подлинности facebook УХОДИТ при обычной отправке. Чтобы завершить безопасное соединение двух учетных записей, я хотел бы во второй раз аутентифицировать пользователя, прежде чем обновлять базу данных с помощью своего идентификатора facebook.
В попытке сделать это …. Я решил получить fb access_token с первым логином, а затем заполнить обычный логин access_token. Затем, после обычной отправки, я могу использовать access_token, чтобы получить информацию о пользователе с помощью php sdk и сохранить идентификатор fb в моей базе данных.
Тем не менее, это безопасно? Передача access_token в форме? Также … Я заметил, что есть способ получить ключ «code» и использовать его для получения access_token и user_info. Однако я не уверен, как получить «код» при использовании логина fb JS sdk.
Любые мысли по этому поводу будет принята с благодарностью. Надеюсь, мне было ясно.
Спасибо
Вы никогда не должны передавать access_token между клиентом и сервером. Когда кто-то задерживается, он может выполнять действия для пользователя под именем вашего приложения.
Я не уверен, что понимаю, что вы имеете в виду под «аутентификацией Facebook, УТОЧНЕНО при обычной отправке».
Вы читали инструкции по использованию аутентификации с помощью PHP SDK? Вы можете найти их здесь: https://developers.facebook.com/docs/php/gettingstarted/4.0.0#authentication
С использованием FacebookJavaScriptLoginHelper
Вы можете легко получить информацию от вошедшего в систему пользователя, используя JS, на свои серверы.
Для JS SDK: https://developers.facebook.com/docs/javascript/quickstart/v2.1#login
Других решений пока нет …