Bắt đầu sử dụng Thư viện ứng dụng PHP của Google Data

Cảnh báo: Trang này nói về các API cũ hơn của Google, tức là Google Data API; trang này chỉ liên quan đến những API có trong thư mục Google Data API. Nhiều API trong số đó đã được thay thế bằng các API mới hơn. Để biết thông tin về một API mới cụ thể, hãy xem tài liệu của API mới đó. Để biết thông tin về cách uỷ quyền cho các yêu cầu bằng một API mới hơn, hãy xem phần Xác thực và uỷ quyền Tài khoản Google.

Jochen Hartmann, Nhóm API dữ liệu của Google
Cập nhật vào tháng 10 năm 2008 (Nguyên văn của Daniel Holevoet)

Giới thiệu

Thư viện ứng dụng Google Data PHP là một tập hợp mạnh mẽ gồm các lớp cho phép bạn tương tác với Google Data API. Không giống như các thư viện máy khách khác của chúng tôi, thư viện này được đóng gói trong Zend Framework phổ biến nhưng cũng có thể được tải xuống riêng. Tương tự như các thư viện ứng dụng khác của chúng tôi, thư viện này cũng là nguồn mở và được thiết kế để trở nên đơn giản và hiệu quả, giúp bạn nhanh chóng bắt đầu các dự án của mình.

Cài đặt trước

PHP có thể đã được cài đặt trên máy phát triển hoặc máy chủ web của bạn, vì vậy, bước đầu tiên là xác minh thông tin đó và đảm bảo rằng phiên bản PHP đủ mới để sử dụng cho thư viện ứng dụng. Cách dễ nhất để kiểm tra là đặt một tệp mới vào một thư mục có thể truy cập trên web trên máy chủ của bạn. Nhập thông tin sau vào tệp:

<?php phpinfo(); ?>

Sau đó, hãy đảm bảo rằng bạn có thể truy cập vào tệp đó trên web bằng cách đặt các quyền thích hợp và chuyển đến vị trí của tệp trong trình duyệt. Nếu đã cài đặt PHP và máy chủ của bạn có thể kết xuất các trang PHP, thì bạn sẽ thấy nội dung tương tự như ảnh chụp màn hình bên dưới:

ảnh chụp màn hình trang thông tin php

Ảnh chụp màn hình cho thấy trang thông tin PHP. Trang này cho biết phiên bản PHP đã được cài đặt (5.2.6 trong trường hợp này), cùng với những tiện ích đã được bật (trong phần "Configure Command" (Lệnh định cấu hình)) và vị trí của tệp cấu hình nội bộ của PHP (trong phần "Loaded Configuration File" (Tệp cấu hình đã tải)). Nếu trang không hiển thị hoặc nếu phiên bản PHP của bạn cũ hơn 5.1.4, bạn sẽ cần cài đặt hoặc nâng cấp phiên bản PHP. Nếu không, bạn có thể bỏ qua phần tiếp theo và tiếp tục cài đặt Thư viện ứng dụng PHP.

Lưu ý: Nếu bạn có quyền truy cập vào dòng lệnh và dự định sử dụng PHP để chạy tập lệnh dòng lệnh, vui lòng xem phần PHP dòng lệnh trong bài viết này.

Cài đặt PHP

Quy trình cài đặt có chút khác biệt tuỳ theo nền tảng, vì vậy, bạn cần làm theo hướng dẫn dành cho nền tảng cụ thể của mình trong quá trình cài đặt. Trước khi bắt đầu, bạn nên lưu ý rằng các gói được cài đặt sẵn (cũng bao gồm máy chủ web Apache và cơ sở dữ liệu MySQL cùng với PHP) ngày càng trở nên phổ biến. Đối với Windows, Mac OS X và Linux, có dự án XAMPP. Người dùng Mac OS X cũng có thể chọn sử dụng dự án MAMP. Cả hai gói này đều hỗ trợ OpenSSL trong PHP (bắt buộc để tương tác với nguồn cấp dữ liệu đã xác thực).

Nếu bạn cài đặt PHP bằng cách làm theo các bước bên dưới, hãy nhớ cài đặt và bật tính năng hỗ trợ OpenSSL. Bạn có thể tìm thêm thông tin chi tiết về vấn đề này trong phần OpenSSL của trang web PHP. Các phần sau đây tập trung vào cách tự cài đặt PHP.

Trên Windows

Cách dễ nhất để cài đặt hoặc nâng cấp PHP trên Windows là dùng trình cài đặt PHP có trên trang tải xuống của PHP.

  1. Chọn trình cài đặt PHP (trong phần nhị phân của Windows) tương ứng với phiên bản PHP mới nhất và cho phép trình cài đặt này tải xuống.
  2. Mở trình cài đặt rồi làm theo hướng dẫn của trình hướng dẫn cài đặt.
  3. Khi trình hướng dẫn nhắc bạn, hãy chọn máy chủ web đã cài đặt trên hệ thống để trình hướng dẫn định cấu hình máy chủ hoạt động với PHP.
  4. Kiểm tra quá trình cài đặt bằng cách làm theo các bước được nêu trong phần ở trên.

Trên Mac OS X

PHP có trong OS X, nhưng trước khi sử dụng, bạn nên nâng cấp lên phiên bản PHP mới nhất. Để nâng cấp, bạn có thể cài đặt bất kỳ gói nhị phân miễn phí nào hoặc tự biên dịch. Để biết thông tin chi tiết, hãy xem trang tài liệu PHP về cách cài đặt trên Mac OS X.

Sau khi cài đặt hoặc thiết lập OS X, hãy kiểm tra quá trình cài đặt bằng cách làm theo các bước được nêu trong phần trước khi cài đặt của tài liệu này.

Trên Linux

Tuỳ thuộc vào bản phân phối Linux, có thể có một lựa chọn thiết lập sẵn hoặc dễ sử dụng để cài đặt PHP. Ví dụ: trên Ubuntu, bạn có thể sử dụng trình quản lý gói hoặc chỉ cần nhập nội dung sau vào một thiết bị đầu cuối:

sudo apt-get install php5

Nếu bản phân phối Linux của bạn không có gói cài đặt, bạn phải cài đặt từ mã nguồn. Có hướng dẫn chi tiết về cách biên dịch PHP cho Apache 1.3biên dịch PHP cho Apache 2. PHP.net cũng có hướng dẫn cho các máy chủ khác.

Cài đặt Thư viện ứng dụng Google Data PHP

Giờ đây, khi đã cài đặt phiên bản PHP đang hoạt động, đã đến lúc bạn cài đặt thư viện ứng dụng. Thư viện ứng dụng là một phần của Zend Framework nguồn mở nhưng cũng có thể được tải xuống dưới dạng phiên bản độc lập. Nếu đã cài đặt một phiên bản Zend Framework (phiên bản 1.6 trở lên), bạn có thể bỏ qua bước cài đặt vì Thư viện ứng dụng Google Data Client đã được đưa vào. Tuy nhiên, bạn nên đảm bảo rằng mình đang sử dụng phiên bản mới nhất của khung này để có thể sử dụng tất cả các tính năng và bản sửa lỗi mới nhất.

Khi tải toàn bộ khung xuống, bạn sẽ có quyền truy cập không chỉ vào Thư viện ứng dụng Google Data mà còn vào phần còn lại của khung. Bản thân thư viện ứng dụng sử dụng một số lớp khác thuộc Zend Framework hoàn chỉnh, nhưng bạn không cần tải toàn bộ khung xuống vì chúng tôi đã gói các lớp này vào bản tải xuống độc lập.

  1. Tải các tệp Thư viện ứng dụng Google Data xuống. (Tìm "Google Data APIs" trong trang đó.)
  2. Giải nén các tệp đã tải xuống. Bạn nên tạo 4 thư mục con:
    • demos – Ứng dụng mẫu
    • documentation – Tài liệu về các tệp thư viện ứng dụng
    • library – Tệp nguồn thư viện ứng dụng thực tế.
    • tests – Tệp kiểm thử đơn vị để kiểm thử tự động.
  3. Thêm vị trí của thư mục library vào đường dẫn PHP (xem phần tiếp theo)

Kiểm tra để đảm bảo bạn có thể truy cập vào các tệp thư viện ứng dụng

Bước cuối cùng là đảm bảo rằng bạn có thể tham chiếu và đưa các tệp Thư viện ứng dụng PHP vào thư mục mà bạn đang tạo dự án. Bạn có thể thực hiện việc này bằng cách đặt biến include_path trong tệp cấu hình của PHP (php.ini). Biến include_path chứa một số vị trí thư mục mà PHP sẽ tìm kiếm khi bạn đưa ra câu lệnh require hoặc include để kéo các lớp, thư viện hoặc tệp bên ngoài vào tập lệnh hiện tại, tương tự như câu lệnh import trong Java. Bạn cần thêm vị trí của các tệp thư viện ứng dụng vào những gì đã được thiết lập trong include_path. Bạn có thể thực hiện việc này theo hai cách (cả hai cách đều được giải thích chi tiết bên dưới):

  • Đặt chỉ thị include_path vĩnh viễn trong tệp cấu hình php.ini từ dòng lệnh – yêu cầu quyền truy cập vào trình bao và quyền ghi.
  • Đặt biến đường dẫn include_path ở cấp "mỗi thư mục" – yêu cầu máy chủ web Apache và khả năng tạo tệp .htaccess.
  • Sử dụng hàm set_include_path() để đặt đường dẫn bao gồm một cách linh động trong tập lệnh của bạn – có thể được đặt một cách linh động trong từng tệp .php.

Nếu bạn có quyền truy cập vào shell và quyền ghi vào tệp php.ini (hoặc nếu bạn đang viết mã trên máy cục bộ), chỉ cần làm theo hướng dẫn trong phụ lục A. Nếu đang sử dụng máy chủ web Apache và có thể tạo tệp .htaccess, thì bạn có thể đặt biến include_path ở cấp "mỗi thư mục", tức là tất cả tệp trong thư mục mà bạn đang làm việc đều có thể tự động tham chiếu đến thư mục thư viện ứng dụng.

Bạn có thể chỉ định các lựa chọn cấu hình PHP như trong đoạn mã bên dưới:

# This works for PHP5 in both Apache versions 1 and 2
<IfModule mod_php5.c>
  php_value include_path        ".:/usr/local/lib/php:/path/to/ZendGdata/library"
</IfModule>

Lưu ý: Hãy tham khảo Sổ tay PHP để biết thêm thông tin về cách thay đổi chế độ cài đặt cấu hình.

Nếu không có quyền truy cập vào shell của máy chủ và không thể sửa đổi hoặc tạo tệp .htaccess, bạn luôn có thể sử dụng hàm set_include_path. Xin lưu ý rằng bạn có thể đã đặt một số giá trị cho include_path, vì vậy, bạn nên làm theo mô hình bên dưới để thêm các giá trị mới thay vì ghi đè toàn bộ đường dẫn:

$clientLibraryPath = '/path/to/ZendGdata/library';
$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath);

Lưu ý: Vui lòng tham khảo các trang hướng dẫn về PHP để biết thêm thông tin chi tiết về hàm set_include_path.

Chạy Trình kiểm tra cài đặt PHP

Để xác minh rằng bạn đã đặt đường dẫn bao gồm đúng cách, bạn có thể chạy tập lệnh Trình kiểm tra cài đặt PHP. Bạn chỉ cần sao chép và dán nội dung của tệp đó vào một tệp mới trong một thư mục có thể truy cập trên web trên máy chủ của bạn rồi chuyển đến tệp đó bằng trình duyệt. Nếu thấy kết quả tương tự như bên dưới, thì mọi thứ đã được định cấu hình đúng cách và bạn đã sẵn sàng sử dụng Thư viện ứng dụng PHP:

ảnh chụp màn hình đầu ra của trình kiểm tra cài đặt php

Nếu bạn thấy lỗi (như trong ảnh chụp màn hình bên dưới), hãy nhớ làm theo hướng dẫn. Bạn có thể thiếu các tiện ích hoặc đường dẫn của bạn vẫn chưa được thiết lập đúng cách. Hãy nhớ rằng bạn có thể phải khởi động lại máy chủ để các thay đổi có hiệu lực. Điều này chỉ áp dụng nếu bạn thực sự sửa đổi tệp php.ini. Ảnh chụp màn hình bên dưới cho thấy include_path được đặt thành /path/to/nowhere:

ảnh chụp màn hình đầu ra của trình kiểm tra cài đặt php

Lưu ý: Xin lưu ý rằng Trình kiểm tra cài đặt PHP sẽ lần lượt kiểm tra những nội dung sau: (1) các tiện ích PHP bắt buộc đã được cài đặt, (2) include_path có trỏ đến thư mục của Thư viện ứng dụng PHP hay không, (3) có thể thực hiện các kết nối SSL hay không và cuối cùng là có thể kết nối với YouTube Data API hay không. Nếu một kiểm thử cụ thể không thành công, các kiểm thử còn lại sẽ không chạy.

Giờ đây, khi bạn đã cài đặt thư viện ứng dụng, đã đến lúc bạn chạy thử các mẫu.

Chạy các mẫu

Ở thư mục gốc Zend/Gdata, có một thư mục chứa các bản minh hoạ – các mẫu giúp bạn bắt đầu. Một số mẫu trong số này được thiết kế để chạy qua dòng lệnh, chẳng hạn như demos/Zend/Gdata/Blogger.phpdemos/Zend/Gdata/Spreadsheet-ClientLogin.php, đồng thời bạn có thể thực thi các mẫu đó bằng php /path/to/example. Bạn có thể chạy các mẫu còn lại qua cả dòng lệnh và trình duyệt web. Nếu bạn muốn xem các tệp này trong trình duyệt, thì bạn nên đặt chúng vào bất kỳ thư mục nào mà bạn sẽ dùng để phân phát trang web. Những mẫu này sẽ giúp bạn có ý tưởng cơ bản về cách viết và chạy một ứng dụng Google Data, nhưng khi bạn đã sẵn sàng tìm hiểu thêm, bạn có thể tham khảo các tài nguyên khác dành cho lập trình viên ham học hỏi.

Lưu ý: Nếu bạn muốn xem bản minh hoạ dựa trên web trực tuyến, vui lòng truy cập vào googlecodesamples.com và tìm các ứng dụng PHP.

Nơi tìm hiểu thêm

Nơi tốt nhất để tìm thông tin về các lớp thuộc thư viện ứng dụng là hướng dẫn tham khảo API trên trang web Zend Framework. Nhớ chọn gói Zend_Gdata trong trình đơn thả xuống.

Đến đây, bạn đã sẵn sàng bắt đầu viết mã. Vậy nên, hãy tiếp tục viết một số ứng dụng tuyệt vời. Chúng tôi rất mong được xem kết quả của bạn!

Bạn có thể tìm thấy hướng dẫn dành cho nhà phát triển PHP cho các dịch vụ sau:

Vì Thư viện ứng dụng PHP là một dự án mã nguồn mở, nên chúng tôi liên tục bổ sung khả năng hỗ trợ cho nhiều API hơn. Mỗi dịch vụ có một nhóm hỗ trợ riêng. Vui lòng xem mục Câu hỏi thường gặp của chúng tôi để biết danh sách các nhóm hỗ trợ hiện có.

Nếu bạn cần trợ giúp khắc phục sự cố với các lệnh gọi API, bạn có thể xem các bài viết về gỡ lỗi yêu cầu API bằng các công cụ ghi lại lưu lượng truy cập mạng và về cách sử dụng máy chủ proxy với Google Data API. Ngoài ra, còn có một số bài viết bên ngoài về cách cài đặt XAMPP trên Linuxcách cài đặt XAMPP trên Windows. Ngoài tất cả những bài viết này, hãy nhớ xem các bài đăng về Thư viện ứng dụng PHP trên blog Mẹo về API dữ liệu của Google.

Phụ lục A: Chỉnh sửa đường dẫn PHP trong tệp cấu hình php.ini

Đường dẫn PHP là biến chứa danh sách các vị trí mà PHP tìm kiếm khi tìm các thư viện bổ sung trong quá trình tải. Để PHP có thể tải và truy cập vào các tệp Thư viện ứng dụng PHP của Google Data trên máy hoặc máy chủ của bạn, bạn cần đặt các tệp này vào một vị trí mà PHP biết. Hoặc bạn cần thêm vị trí của các tệp vào đường dẫn PHP. Xin lưu ý rằng những thay đổi đối với tệp php.ini thường yêu cầu bạn khởi động lại máy chủ. Bạn luôn có thể xác minh giá trị hiện tại của biến include_path bằng cách chuyển đến trang Thông tin PHP đã thảo luận trước đó. Tìm ô Loaded Configuration File (Tệp cấu hình đã tải) trong bảng đầu tiên và tìm đường dẫn trong cột ở bên phải.

Lưu ý: Nếu thấy rằng bạn đang sử dụng php từ dòng lệnh, thì có thể bạn cần sửa đổi một biến đường dẫn khác. Nhớ xem Phụ lục B: Sử dụng PHP từ dòng lệnh.

Sau khi bạn tìm thấy tệp php.ini, hãy làm theo các bước sau để thêm vào đường dẫn.

  1. Mở tệp php.ini trong trình chỉnh sửa văn bản mà bạn yêu thích.
  2. Tìm dòng tham chiếu đến đường dẫn PHP, dòng này phải bắt đầu bằng include_path.
  3. Thêm đường dẫn mà bạn đã lưu Zend Framework vào danh sách các vị trí hiện có, thêm đường dẫn mới của bạn vào trước bằng dấu phân cách được chỉ định cho hệ điều hành của bạn (: trên các hệ thống tương tự như Unix, ; trên Windows). Đường dẫn chính xác trên các hệ thống tương tự như Unix sẽ có dạng như sau:
    /path1:/path2:/usr/local/lib/php/library
    Trên Windows, đường dẫn sẽ có dạng như sau:
    \path1;\path2;\php\library
  4. Lưu và đóng tệp.

Lưu ý: Trên Mac OS X, Finder không cho phép truy cập vào các tệp nằm ở các vị trí hệ thống, chẳng hạn như thư mục /etc. Do đó, cách dễ nhất là chỉnh sửa các tệp này bằng một trình chỉnh sửa dòng lệnh như vi hoặc pico. Để thực hiện việc này, hãy dùng một lệnh như: pico /path/to/php.ini.

Phụ lục B: Sử dụng PHP từ dòng lệnh

Kể từ phiên bản PHP 5, có một tiện ích dòng lệnh trong PHP được gọi là CLI (trình thông dịch dòng lệnh). Việc sử dụng tiện ích này cho phép chạy các tập lệnh php từ dòng lệnh. Trường hợp mà bạn có thể sử dụng tính năng này là khi bạn đang chạy PHP cục bộ trên máy và đang tìm cách kiểm thử nhanh một số tập lệnh. Tất nhiên, trên máy chủ của bạn, bạn sẽ cần có quyền truy cập vào shell. Một điều quan trọng cần lưu ý là PHP thường sử dụng 2 tệp php.ini riêng biệt, một tệp chứa các lựa chọn cấu hình cho PHP chạy trên máy chủ của bạn và một tệp khác cho các cấu hình mà PHP sử dụng khi chạy từ dòng lệnh. Nếu muốn chạy các ứng dụng minh hoạ dòng lệnh trong thư viện ứng dụng, bạn cũng cần sửa đổi tệp php.ini dòng lệnh.

Để tìm tệp này, hãy nhập các lệnh sau trên các hệ thống tương tự Unix (Mac OS X, Linux và các hệ thống khác):

php -i | grep php.ini

Lệnh đó sẽ dẫn đến việc thông tin sau đây xuất hiện trong thiết bị đầu cuối của bạn:

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

Lưu ý: Tất nhiên, vị trí đường dẫn thực tế (/etc/php...) có thể khác trên hệ thống của bạn.

Phụ lục C: Gợi ý và giải pháp

Phần này trình bày vắn tắt một số vấn đề mà nhà phát triển đã phát hiện khi làm việc với PHP và các giải pháp phù hợp.

Vấn đề với tiện ích dom-xml trong XAMPP

Thư viện ứng dụng PHP sử dụng các lớp DOMDocument để chuyển đổi các yêu cầu và phản hồi XML thành các đối tượng PHP. Tiện ích dom-xml có thể gây ra vấn đề với việc xử lý XML và dẫn đến các phép biến đổi không chính xác. Một số nhà phát triển của chúng tôi nhận thấy rằng khi sử dụng XAMPP, hàm khởi tạo DOMDocument sẽ bị ghi đè bằng một lệnh gọi hàm cũ hơn, như được giải thích trên trang web PHP. Để khắc phục vấn đề này, hãy đảm bảo rằng quá trình xử lý XML không bị ghi đè trong tệp php.ini. Đảm bảo xoá các tham chiếu đến php_domxml.dll khỏi tệp cấu hình của bạn.

Yêu cầu hết thời gian chờ khi sử dụng thư viện ứng dụng

Nếu đang dùng thư viện ứng dụng để thực hiện các yêu cầu khá lớn, chẳng hạn như tải video lên YouTube Data API, thì bạn có thể cần thay đổi tham số timeout trong lớp Zend_Http_Client. Bạn có thể dễ dàng thực hiện việc này bằng cách truyền một tham số $config trong quá trình tạo thực thể. Tham số này sẽ đặt giá trị timeout thành một giá trị khác với giá trị mặc định là 10 giây:

// assuming your Zend_Http_Client already exists as $httpClient
// and that you want to change the timeout from the 10 second default to 30 seconds

$config = array('timeout' => 30);
$httpClient->setConfig($config);

Một số nhà cung cấp dịch vụ lưu trữ không cho phép các kết nối https được thực hiện từ máy chủ của họ

Chúng tôi được biết rằng một số nhà cung cấp dịch vụ lưu trữ không cho phép bạn thực hiện các kết nối https từ máy chủ mặc định của họ. Nếu nhận được thông báo lỗi tương tự như bên dưới, thì bạn có thể cần thực hiện các kết nối https thông qua một proxy bảo mật:

Unable to Connect to sslv2://www.google.com:443. Error #110: Connection timed out

Nhà cung cấp dịch vụ lưu trữ của bạn phải có thông tin về địa chỉ thực của máy chủ proxy cần sử dụng. Đoạn mã dưới đây minh hoạ cách sử dụng cấu hình proxy tuỳ chỉnh với Thư viện ứng dụng PHP:

// Load the proxy adapter class in addition to the other required classes
Zend_Loader::loadClass('Zend_Http_Client_Adapter_Proxy');

// Configure the proxy connection with your hostname and portnumber
$config = array(
    'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
    'proxy_host' => 'your.proxy.server.net',
    'proxy_port' => 3128
);

// A simple https request would be an attempt to authenticate via ClientLogin
$proxiedHttpClient = new Zend_Http_Client('http://www.google.com:443', $config);

$username = 'foo@example.com';
$password = 'barbaz';

// The service name would depend on what API you are interacting with, here
// we are using the Google DocumentsList Data API
$service = Zend_Gdata_Docs::AUTH_SERVICE_NAME;

// Try to perform the ClientLogin authentication using our proxy client.
// If there is an error, we exit since it doesn't make sense to go on.
try {

  // Note that we are creating another Zend_Http_Client
  // by passing our proxied client into the constructor.

  $httpClient = Zend_Gdata_ClientLogin::getHttpClient(
      $username, $password, $service, $proxiedHttpClient);

} catch (Zend_Gdata_App_HttpException $httpException) {

  // You may want to handle this differently in your application
  exit("An error occurred trying to connect to the proxy server\n" .
      $httpException->getMessage() . "\n");

}

Nhật ký sửa đổi

Ngày 1 tháng 10 năm 2008

Người cập nhật: Jochen Hartmann. Bản cập nhật này có những thay đổi sau:

  • Đã làm rõ cấu hình PHP cho máy chủ web bằng cách di chuyển các phần đề cập đến PHP dòng lệnh vào một phụ lục.
  • Thêm ghi chú về nhiều tệp cấu hình php.ini.
  • Đã thêm các phần về cách đặt include_path một cách linh hoạt.
  • Đã thêm phần về tập lệnh trình kiểm tra cài đặt.
  • Thêm đường liên kết đến các mẫu trực tuyến.
  • Đã thêm đường liên kết cho XAMPP và MAMP.
  • Thêm phụ lục "Gợi ý và giải pháp".