Hướng dẫn api login google php - đăng nhập api 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) 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! Rất nhiều các dịch vụ của Google có thể truy cập và ứng dụng vào dự án PHP của bạn thông qua các API mà chính Google cung cấp. Google cung cấp sẵn các thư viện này ở đây: google-api-php-client. Có thể tải về và cài đặt thủ công vào dự án nhưng nên dùng Composer để tích hợp bằng cách gõ lệnh sau để thư viện đó tích hợp vào dự án (trong thư mục composer require google/apiclient:^2.0 Như vậy đã có thư viện, đảm bảo load thư viện băng cách thêm mã: Sử dụng xác thực OAuth tài khoản Google PlusDịch vụ này cho phép người dùng cung cấp các thông tin xác thực, như để đăng nhập vào website của bạn chẳng hạn. Người dùng sẽ được chuyển hưởng đến dịch vụ của Google và Google sẽ cung cấp lại các thông tin cần thiết để xác thực như ID, username, email ... tùy thuộc vào sự cho phép của người dùng ... (thông tin và quyền hạn do bạn thiết lập - thường thì với login thì bạn chỉ cần xin email của người dùng là đủ). Để sử dụng được API của Google trước tiên bạn cần có một dự án (ứng dụng) tại Google API:Google API: Tạo ứng dụng (dự án) Google API Bạn phải có một tài khoản Google Console tại https://console.developers.google.com/ vậy hãy đăng ký tài khoản này trước. Sau đó bấm vào mục Tạo Credentials: Đây là mã để ứng dụng của bạn truy cập dịch vụ. Bạn chọn dự án mới tạo ra, chọn đến mục Credentials để tạo mới. Khi bấm vào Create Credential, chọn mục Tiếp theo bấm vào Sau khi Save lại, màn hình hiện ra chọn
Như vậy bước chuẩn bị đã xong, cơ bản bước này bạn cần một tài khoản 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"; }3, mã 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, 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"; }5 và 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"; }6 mà Google sẽ chuyển hướng thông tin cho bạn. Lập trình PHP với Google Client để đăng nhập websiteMục tiêu là sử dụng OAuth của Google để cho phép người dùng đăng nhập vào website của bạn, cụ thể như sau: là sử dụng OAuth của Google để cho phép người dùng đăng nhập vào website của bạn, cụ thể như sau:
Dưới đây là mã PHP dành cho URL (trang) khi người dùng đăng nhập, cũng là URL mà Google gửi thông tin ( 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) Nội dung file composer require google/apiclient:^2.00 <?php /** * Trang này để lấy thông tin đăng nhập từ google, nếu chưa đăng nhập sẽ mở popup để xác thực từ Google */ include "vendor/autoload.php"; /** getinfo: Hàm này lấy thông tin User sau khi đã xác thực thành công, nên chuyển hàm này vào file khác * @param $client Google_Client * @return mixed */ function getinfo($client) { $client->setAccessToken($_SESSION['access_token']); $plus = new Google_Service_Plus($client); if ($client->isAccessTokenExpired()) { //Truy cập bị hết hạn, cần xác thực lại //Chuyển hướng sang Google để lấy xác thực $auth_url = $client->createAuthUrl(); header("Location: $auth_url"); die(); } //Lấy các thông tin của User $me = $plus->people->get('me'); $id = @$me['id']; //ID $email = @$me['emails'][0]['value']; //Địa chỉ email $name = @$me['displayName']; //Tên $image = @$me['image']['url']; //Url của ảnh avatar var_dump($id, $email, $name); /*** Đến đây bạn đã có $email, $id, $name ... từ tài khoản Google của người dùng Từ thông tin này bạn cho phép đăng nhập (xác thực, đăng ký ...) trên website của bạn mà không cần thiết phải yêu cầu nhập các thông tin khác (password, xác thực email ...) ***/ } /*** * * TRANG ĐĂNG NHẬP VỚI GOOGLE CLIENT * ***/ $client = new Google_Client(); $redirecturi = "http://xuanthulab.net/logingoogle.php"; // URL này được Google chuyển hướng, khi người dùng đồng ý $client->setRedirectUri($redirecturi); // Khai báo xin các quyền truy cập: lấy email, tên, ID người dùng ... // Tham khảo các quyền khác Scope: https://developers.google.com/identity/protocols/googlescopes $client->addScope([ 'https://www.googleapis.com/auth/plus.login', 'https://www.googleapis.com/auth/userinfo.email' ]); //Set param google API $client->setClientId('điền mã Client ID đã cấp'); $client->setClientSecret('điền mã Secret đã cấp'); $client->setAccessType('offline'); //Đây là URL đến Google, bạn cần mở nếu chưa đăng nhập $auth_url = $client->createAuthUrl(); if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { /* * Đã đăng nhập trước rồi do tồn tại access_token trong Session * Nên bạn không cần xác thực từ Google nữa mà chỉ việc lấy thông tin */ getinfo($client); } else { /** * Nếu tồn tại $_GET['code'] trên URL có nghĩa là Google vừa gửi Code truy cập tới cho bạn, bạn cần lấy thông * tin này để truy cập. */ if (isset($_GET['code'])) { $client->fetchAccessTokenWithAuthCode($_GET['code']); //Lấy mã Token và lưu lại tại SESSION $_SESSION['access_token'] = $client->getAccessToken(); getinfo($client); } else { //Chuyển hướng sang Google để lấy xác thực $auth_url = $client->createAuthUrl(); header("Location: $auth_url"); die(); } } |