Кладь account fb connect php. Это правильный способ сделать FB Connect? 'Войти через Facebook'. Регистрация приложения в фб

Кладь account fb connect php. Это правильный способ сделать FB Connect? 'Войти через Facebook'. Регистрация приложения в фб

06.02.2024

Итак, начал я разрабатывать один проект по фану. Основная идея проекта проста: площадка, где все могут ставить на всё что угодно, заключать пари, сделки и БЕЗ каких либо ограничений. Развлекательный проект по сути своей.

Ну и конечно стал вопрос Удобной авторизации пользователей с наименьшим «трением». Подумав немного, я выбрал авторизацию через Facebook, но думаю, на этом я не остановлюсь и вы прочтете ещё несколько статей, с авторизацией через Google Acc, VK и Tweet.

Итак к делу! В интернете я нашел несколько тем, которые описывают вопрос авторизации, некоторая информация мне помогла, но я не нашел ни одной, которая бы решила поставленную мной задачу, поэтому, завершив задачу я и решил написать эту статью.

СДЕЛАНО: Регистрация пользователя в БД и его авторизация на сайте одним нажатием Кастомной кнопки (любая картинка на ваш вкус)

1. РЕГИСТРАЦИЯ ПРИЛОЖЕНИЯ В ФБ:а. https://developers.facebook.com/apps/
б. Регистрируем приложение, прописываем адрес вашего сайта, страницы принятия данных для ответа, и многое другое. Интерфейс очень дружелюбный, фэйсбук нас любит. Поэтому рассписывать всё и вся я не буду. Оттуда нам нужно будет ID приложения и адрес сайта. 2. ФРОНТ ЭНД: Привожу полный рабочий пример со своего сайта. По клику на ссылку вызывается функция: «fb_login()», функция сначала проверяет «а залогинен ли пользователь в фэйсбуке?» если ДА, берет его ID и отправляет аяксом в БэкЭнд, если НЕТ, то вызывает форму для входа в Фэйсбук аккаунт.

Fb_login() - инициирует общение с ФБ
handle_fb_data() - занимается получением и пересылкой полученных из ФБ данных пользователя в БэкЭнд

function handle_fb_data(response){ FB.api("/me", function(response) { console.log("Successful login for: " + response.name); console.log("Прилитело из ФБ: "+JSON.stringify(response)); // alert("Прилитело из ФБ: "+JSON.stringify(response)); $.ajax({ type: "post", url: "/do/reg/fb", data: response, success: function(msg) { console.log(msg); if ((msg=="зарегались")||(msg=="залогинились")){window.location.reload();} }, error: function(){} }) }); } function fb_login(){ FB.getLoginStatus(function(response) { if (response.authResponse) { console.log("Welcome! Fetching your information.... "); handle_fb_data(response); } else { console.log("Юзер был не залогинен в самом ФБ, запускаем окно логинизирования"); FB.login(function(response){ if (response.authResponse) { console.log("Welcome! Fetching your information.... "); handle_fb_data(response); } else { console.log("Походу пользователь передумал логиниться через ФБ"); } }); } }, { scope: "email,id" }); } window.fbAsyncInit = function() { FB.init({ appId: "{ТУТ ВСТАВЬТЕ ID ПРИЛОЖЕНИЯ}", cookie: true, // enable cookies to allow the server to access // the session xfbml: true, // parse social plugins on this page version: "v2.8" // use graph api version 2.8 }); }; // Load the SDK asynchronously (function(d, s, id) { var js, fjs = d.getElementsByTagName(s); if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, "script", "facebook-jssdk"));
Ну собственно по фронтэнду всё, теперь рассмотрим БэкЭнд.

3. БЭК ЭНД public function fb(){ if (($this->session->userdata("logged_in") != true)){ // 1. Не делаем ничего, если пользователь УЖЕ залогинен. // 2. Если нет, то Проверим, есть ли у нас в БД юзер с таким FB_ID // если есть, то залогинем его // 3. Если пользователя в базе нет, то сначала его зарегаем и сразу залогинем // Итак, вытаскиваем из базы всё что есть по данному пользователю и заносим всё в его сессию, т.е. "логинем" $query = $this->db->get_where("users", array("fb_id" => $_POST["id"])); if ($query->num_rows() > 0) { foreach ($query->row_array() as $key => $value) { $userdata[$key] = $value; } $userdata["logged_in"] = true; //проверяем, есть ли у пользователя в сессии информация по какой-либо его сделке, если есть, добавляем пользователя в сделку if ($this->session->userdata("bet_code_last") != false) { $data = array("start_user_id" => $userdata["id"]); $this->db->where("bet_code", $this->session->userdata("bet_code_last")); $this->db->update("bet", $data); $this->session->sess_destroy(); } $this->session->set_userdata($userdata); echo "залогинились"; } else { $data = array("fb_id" => $_POST["id"], "lang" => "en", "name" => $_POST["name"],); // предполагаем, что если имя пользователя содежит русские символы, то русский язык интерфейса ему будет более удобен if(preg_match("/[ёа-я]/i", $_POST["name"])){$data["lang"]="ru";} $this->db->insert("users", $data); // строчкой выше зарегали его в базе, а стройкой ниже залогинили пользователя;) $data["logged_in"] = true; $this->session->set_userdata($data); echo "зарегались"; } }else{echo "уже был залогинен";} }
В PHP коде используются функции обращения в БД от фрэймворка Codeigniter. Ну в общем весь процесс я описал, надеюсь, что весьма понятно и доступно.Примечания:1. Потом и кровью сам додумал, что лучше будет сначала проверять статус, а потом вызывать форму логина (на фронтэнде), чего не было не в одном из описаний в явном виде.

2. После того как данные занесены в сессию, страница все ещё не обновлена, поэтому я её обновляю вот этой строкой, в те моменты, когда БэкЭнд подтверждает что сдела всё, что надо:
if ((msg=="зарегались")||(msg=="залогинились")){window.location.reload();}

Спасибо за внимание!

Facebook is the most popular social media and shares on the Facebook wall are the most used activity by its user. Facebook share option is a common and required feature for every web application. We can easily share the post on Facebook by manually or from the script. In this tutorial, you’ll learn how to post activity on Facebook wall from website using PHP and Facebook API.

Post to Facebook wall is useful when you want to post dynamic content to Facebook from the website. Here we’ll build a simple PHP script to publish Facebook post from website using Facebook PHP SDK. This functionality lets the user submit the post (message, picture, link, text content) on their Facebook timeline from the website using PHP SDK v5.0 and Facebook Graph API .

Before getting started to post to Facebook wall using PHP, take a look at the files and folders structure.

Facebook Apps Creation

To access Facebook API, App ID & App Secret need to be specified on Facebook API call. You need to create a Facebook App for generating App ID & App Secret. If you’re not already created a Facebook app, visit the link below to create and configure a Facebook App from the App Dashboard .

After completing the Facebook App creation and configuration you’ll get the App ID and App secret. Copy this App ID and App Secret of your Facebook App for later use.

Facebook SDK for PHP v5.0

All Facebook PHP SDK files are included in the facebook-php-sdk/ directory, place the facebook-php-sdk/ folder into the root directory. You don’t need to download it separately, Facebook SDK v5 is included in our source code.

Facebook API Configuration (fbConfig.php)

The fbConfig.php file is used to configure Facebook SDK and connect to Facebook Graph API. Specify your Facebook App ID ($appId), App Secret ($appSecret), Callback URL ($redirectURL), and Permissions ($fbPermissions) to connect with Facebook API and working with SDK.

Note that: The access token must have the publish_actions permission to post on Facebook wall.

Note that: You’ll find the App ID and App Secret on your Facebook Apps settings page.

Submit Post to Facebook Wall (index.php)

Include the fbConfig.php file to connect Facebook API and get the access token.

If FB access token ($accessToken) is available, the following will happen.

If FB access token ($accessToken) is not available, the Facebook Login URL will be generated and the user would be redirected to the FB login page.

© 2024 mnogodropa.ru - Windows. Железо. Интернет. Безопасность. Операционные системы. Железо