Bài 07: Sử dụng PHP CURL tạo album Picasa và trả về ID album
Tiếp bước bài viết sử dụng curl để upload hình lên Picasa thì chúng ta sẽ tìm hiểu làm thế nào để tạo một album mới trong picasa, trong bài này chúng ta sẽ sử dụng PHP CURL và có kế thừa hàm login google ở bài trước để thực hiện tạo album trên Picasa.
1. Tại sao phải tạo album khi dùng CURL upload hình lên Picasa
Lý do đơn giản nhất là trong Picasa chỉ cho phép chúng ta upload bao nhiêu hình cho một album, lúc trước là 1000 hình nhưng bây giờ là 2000 hình thì phải. Nên nếu chúng ta gán albumID cố định thì sau khi hết số lượng cho phép sẽ không up thêm được nữa. Lúc này ta phải đăng nhập vào Picasa để tạo album khác và lấy ID của album đó, thật là rườm rà phải không nào. Chính vì vậy Google có cung cấp cho chúng ta API để tạo album và đương nhiên là sẽ có những header thông số cấu hình như tên album, mô tả album kèm theo khi tạo.
Cấu trúc header:
$header = array( 'Content-Type: application/atom+xml', 'Authorization: GoogleLogin auth="' . $key . '"', "MIME-Version: 1.0" );
$key
là ID mà google cung cấp kh
Cấu trúc XML:
Bài viết này được đăng tại [free tuts .net]
$rawXml = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:gphoto='http://schemas.google.com/photos/2007'> <title type='text'>$titleAlbum</title> <summary type='text'>$descAlbum</summary> <gphoto:location>Viet Nam</gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:timestamp>".time()."</gphoto:timestamp> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album'></category> </entry>";
$titleAlbum
: là tiêu đề của album$descAlbum
: là mô tả của albumtime()
: là thời gian tạo album
2. Hàm tạo album Picasa sử dụng CURL trong PHP
Bây giờ chúng ta sử dụng CURL và các thông số header, xml ở trên để tạo album, các bước như sau:
- Đăng nhập google để lấy
$key
, sau đó gán key vào header - Sử dụng CURL truyền các tham số header và xml vào thực thi trả kết quả về.
- Dựa vào kết quả lấy ID album và sau đó lưu vào nơi lưu trữ
Chi tiết hàm tạo album picasa như sau:
function create_album_picasa($accountID = '', $titleAlbum = 'Tiêu đề album', $descAlbum = 'Tiêu đề album') { $key = login_google(); // Kiểm tra key login if (!$key){ return 'Không thể đăng nhập vào tài khoản Google'; } // Cấu trúc XML tạo album $rawXml = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:gphoto='http://schemas.google.com/photos/2007'> <title type='text'>$titleAlbum</title> <summary type='text'>$descAlbum</summary> <gphoto:location>Viet Nam</gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:timestamp>".time()."</gphoto:timestamp> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album'></category> </entry>"; $header = array( 'Content-Type: application/atom+xml', 'Authorization: GoogleLogin auth="' . $key . '"', "MIME-Version: 1.0" ); // Thiết lập CURL OPTIONS $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://picasaweb.google.com/data/feed/api/user/$accountID"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $rawXml); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); $ret = curl_exec($ch); if (preg_match('#<id>.+?albumid/(.+?)</id>#i', $ret, $match)) { return $match[1]; } return false; }
$accountID
là ID của tài khoản hiện tại$titleAlbum
là tiêu đề của album$descAlbum
là mô tả cho album
Trong hàm tôi có sử dụng hàm login_google()
mà ở bài upload hình lên picasa chúng ta đã trình bày, nội dung hàm đó như sau:
function login_google() { // Đăng nhập vào account $data = array( 'accountType' => 'GOOGLE', 'Email' => 'your_email@gmail.com', // Email của bạn 'Passwd' => 'your_pass', // Mật khẩu của bạn 'source' => __FILE__, 'service' =>'lh2' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $hasil = curl_exec($ch); // Kiểm tra kết quả thành công hay thất bại // Nếu thành công thì google sẽ trả về đoạn mã có định dạng // Auth=key, nên ta lấy key bằng cách sử dụng hàm preg_match if (preg_match('#Auth=([a-z0-9_\-]+)#i', $hasil, $match)) { return $match[1]; } return false; }
Cách sử dụng hàm tạo album picasa
echo create_album_picasa('104078062985748317081', 'tiêu đề album', 'mô tả album');
3. Lời kết
Bài này mục đích hướng dẫn bạn tạo và sử dụng hàm tạo album mới picasa sử dụng code PHP để kết hợp với bài trước. Serie này chúng ta sẽ làm đủ ba thao tác đó là upload hình picasa, tạo album picasa, xóa album picasa, sau đó chúng ta kết hợp lại thành một class chuyên xử lý hình trên Picasa để các bạn dễ dàng sử dụng.