Hướng dẫn login with google php - đăng nhập bằng google php
Bây giờ việc login mạng xã hội đối với nhu cầu website rất cần thiết, giúp cho người dùng đăng nhập và đăng ký một cách nhanh và hiệu quả, ta cũng thấy rằng các website khác có các chức năng như: Login Google hoặc Facebook,Twitter,...login khác nhiều mạng xã hội Nay mình chia sẻ mọi người cách Login Google như sau, đầu tiên ta cũng cần cài đặt trên Google API Console, để có được (client ID,client secret) Sau khi ta có được Client ID và Client secret ta copy nó và lưu lại để hồi khai báo trong login google.Tiếp tục bạn cần tải bộ thư viện google cung cấp cho ta về có 2 cách để làm điều này, bạn dùng cách nào cũng được! Cách 1: $ composer require google/apiclient:"^2.0"$ composer require google/apiclient:"^2.0" Cách 2: https://github.com/googleapis/google-api-php-client/releaseshttps://github.com/googleapis/google-api-php-client/releases Khi bạn tải thư viện về, bạn giải nén vào project bạn cần dùng là được! Tạo file define.php in project define.php in project Ở bên trên mình cài đặt file define.phpđể giúp chúng ta thuận lợi khi gọi chúng, bạn copy các Client ID và Clien Secret vào file define.php define.phpđể giúp chúng ta thuận lợi khi gọi chúng, bạn copy các Client ID và Clien Secret vào file define.php Tạo file redirect-google.php trong project của ta như sau:redirect-google.php trong project của ta như sau: setClientId(GOOGLE_APP_ID); $client->setClientSecret(GOOGLE_APP_SECRET); $client->setRedirectUri(GOOGLE_APP_CALLBACK_URL); $client->addScope("email"); $client->addScope("profile"); if (isset($_GET['code'])) { $token = $client->fetchAccessTokenWithAuthCode($_GET['code']); // print_r($token); $client->setAccessToken($token['access_token']); // get profile info $google_oauth = new Google_Service_Oauth2($client); $google_account_info = $google_oauth->userinfo->get(); $email = $google_account_info->email; $name = $google_account_info->name; // print_r($google_account_info); /** * CHECK EMAIL AND NAME IN DATABASE */ $check = "SELECT * FROM `users` WHERE `email`='".$email."' and `name`='".$name."'"; $result = mysqli_query($conn,$sql); $rowcount=mysqli_num_rows($result); if($rowcount>0){ /** * USER EXITS */ header('location:home'); } else{ /** * INSERT USER TO DATABASE * AFTER INSERT, YOU CAN HEADER TO HOME */ } } else { /** * IF YOU DON'T LOGIN GOOGLE * YOU CAN SEEN AGAIN GOOGLE_APP_ID, GOOGLE_APP_SECRET, GOOGLE_APP_CALLBACK_URL */ echo "Google Login"; } Vậy là xong, giờ ta có thể test thử xem coi nó chạy sao, bạn chỉ cần gõ http://localhost/LoginGoogle/redirect-google.php là được http://localhost/LoginGoogle/redirect-google.php là được Các bạn nếu gặp lỗi thì xem lại phần Client ID và Client Secret, Link Callback đúng chưa nghe! Chúc các bạn thành công! Chào các bạn. Như đã biết thì Google API client library sẽ cho phép chung ta sử dụng rất nhiều dịch vụ của Google như Google+, Drive, Google Map, Yotube,...và hôm nay tôi sẽ hướng dẫn các bạn cách sử dụng nó để đăng nhập vào website. Và tất nhiên để sử dụng thư viện này chúng ta cần phải có Client id và Secret key và đây là cách để lấy Client id và Secret key từ Google API Console. Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức. Mục tiêu: Đăng nhập hoặc tạo mới 1 account với Google API: Đăng nhập hoặc tạo mới 1 account với Google API Yêu cầu cho project này:
1. Tạo databaseViệc đầu tiên là tạo 1 database với cấu trúc table như sau: Bài viết này được đăng tại [free tuts .net] CREATE TABLE IF NOT EXISTS `google_users` ( `google_id` decimal(21,0) NOT NULL, `google_name` varchar(60) NOT NULL, `google_email` varchar(60) NOT NULL, `google_link` varchar(60) NOT NULL, `google_picture_link` varchar(200) NOT NULL, PRIMARY KEY (`google_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 2. Tải thư viện Google API clientCó 2 cái cách để tải: Cách 1: Tải trực tiếp từ Github thông qua link này. Sau khi tải về bạn giải nén và copy tất cả bỏ vào thư mục Cách 2: Sử dụng composer để tải về:: Sử dụng composer để tải về: Mở thư mục { "require": { "google/apiclient": "1.0.*@beta" } } Sau đó trên command line chạy lệnh: Composer install và một folder vendor sẽ xuất hiện trong code của bạnComposer install và một folder vendor sẽ xuất hiện trong code của bạn 3. Tạo page login và xử lý thôiTạo 1 page setClientId(GOOGLE_APP_ID); $client->setClientSecret(GOOGLE_APP_SECRET); $client->setRedirectUri(GOOGLE_APP_CALLBACK_URL); $client->addScope("email"); $client->addScope("profile"); if (isset($_GET['code'])) { $token = $client->fetchAccessTokenWithAuthCode($_GET['code']); // print_r($token); $client->setAccessToken($token['access_token']); // get profile info $google_oauth = new Google_Service_Oauth2($client); $google_account_info = $google_oauth->userinfo->get(); $email = $google_account_info->email; $name = $google_account_info->name; // print_r($google_account_info); /** * CHECK EMAIL AND NAME IN DATABASE */ $check = "SELECT * FROM `users` WHERE `email`='".$email."' and `name`='".$name."'"; $result = mysqli_query($conn,$sql); $rowcount=mysqli_num_rows($result); if($rowcount>0){ /** * USER EXITS */ header('location:home'); } else{ /** * INSERT USER TO DATABASE * AFTER INSERT, YOU CAN HEADER TO HOME */ } } else { /** * IF YOU DON'T LOGIN GOOGLE * YOU CAN SEEN AGAIN GOOGLE_APP_ID, GOOGLE_APP_SECRET, GOOGLE_APP_CALLBACK_URL */ echo "Google Login"; }0 với nội dung setClientId($client_id); $client->setClientSecret($client_secret); $client->setRedirectUri($redirect_uri); $client->addScope("email"); $client->addScope("profile"); $service = new Google_Service_Oauth2($client); // Nếu kết nối thành công, sau đó xử lý thông tin và lưu vào database if (isset($_GET['code'])) { $client->authenticate($_GET['code']); $_SESSION['access_token'] = $client->getAccessToken(); //header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); $user = $service->userinfo->get(); //get user info // connect to database $mysqli = new mysqli($host_name, $db_username, $db_password, $db_name); if ($mysqli->connect_error) { die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); } //Kiểm tra xem nếu user này đã tồn tại, sau đó nên login tự động $result = $mysqli->query("SELECT COUNT(google_id) as usercount FROM google_users WHERE google_id=$user->id"); $user_count = $result->fetch_object()->usercount; //will return 0 if user doesn't exist //show user picture echo ''; if($user_count) // Nếu user tồn tại thì show thông tin hiện có { echo 'Welcome back '.$user->name.'! [Log Out]'; } else //Ngược lại tạo mới 1 user vào database { echo 'Hi '.$user->name.', Thanks for Registering! [Log Out]'; $statement = $mysqli->prepare("INSERT INTO google_users (google_id, google_name, google_email, google_link, google_picture_link) VALUES (?,?,?,?,?)"); $statement->bind_param('issss', $user->id, $user->name, $user->email, $user->link, $user->picture); $statement->execute(); echo $mysqli->error; } exit; } //Nếu sẵn sàng kết nối, sau đó lưu session với tên access_token if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { $client->setAccessToken($_SESSION['access_token']); } else { // Ngược lại tạo 1 link để login $authUrl = $client->createAuthUrl(); } //Hiển thị button để login echo ' Truy cập link setClientId(GOOGLE_APP_ID); $client->setClientSecret(GOOGLE_APP_SECRET); $client->setRedirectUri(GOOGLE_APP_CALLBACK_URL); $client->addScope("email"); $client->addScope("profile"); if (isset($_GET['code'])) { $token = $client->fetchAccessTokenWithAuthCode($_GET['code']); // print_r($token); $client->setAccessToken($token['access_token']); // get profile info $google_oauth = new Google_Service_Oauth2($client); $google_account_info = $google_oauth->userinfo->get(); $email = $google_account_info->email; $name = $google_account_info->name; // print_r($google_account_info); /** * CHECK EMAIL AND NAME IN DATABASE */ $check = "SELECT * FROM `users` WHERE `email`='".$email."' and `name`='".$name."'"; $result = mysqli_query($conn,$sql); $rowcount=mysqli_num_rows($result); if($rowcount>0){ /** * USER EXITS */ header('location:home'); } else{ /** * INSERT USER TO DATABASE * AFTER INSERT, YOU CAN HEADER TO HOME */ } } else { /** * IF YOU DON'T LOGIN GOOGLE * YOU CAN SEEN AGAIN GOOGLE_APP_ID, GOOGLE_APP_SECRET, GOOGLE_APP_CALLBACK_URL */ echo "Google Login"; }1 và xem kết quả 4. Lời kếtTrong bài viết này có đề cập đến chức năng sử dụng composer để quản lý các thư viện và các để lấy Client ID và Secret key từ google api console. Tôi sẽ hướng dẫn chi tiết vào bài viết khác.composer để quản lý các thư viện và các để lấy Client ID và Secret key từ google api console. Tôi sẽ hướng dẫn chi tiết vào bài viết khác. Nếu bạn có bất kỳ vấn đề gì trong quá trình tích hợp hãy để lại comment bên dưới. Tôi sẽ trả lời sớm nhất. |