Hướng dẫn google api-php-client
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: 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 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:
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 ( Nội dung file <?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(); } } |