PHP CURL
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

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.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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"
);
Trong đó $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>";
Trong đó:

  • $titleAlbum: là tiêu đề của album
  • $descAlbum: là mô tả của album
  • time(): 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;
}
Trong đó các tham số:

  • $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');
Quá đơn giản phải không nào.

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.

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top