SlideShare a Scribd company logo
CÔNG TY VNG




ZING ME OPENSOCIAL API
       VERSION 1.3.3
       Nhóm Zing Me Open Social




               TP. HCM
               10/2010

                  1
M CL C




1     Gi i thi u ............................................................................................................................ 3
2     Mô hình ho t ñ ng c a                 ng d ng trên Zing Me theo chu n Open Social ........................... 3
3     Các th XML mà Zing OS c n h tr .................................................................................. 4
    3.1     <Module> ..................................................................................................................... 4
    3.2     <ModulePrefs> ............................................................................................................. 4
    3.3     <Content> .................................................................................................................... 4
    3.4     <Require> .................................................................................................................... 5
4     JS API................................................................................................................................. 5
    4.1     Danh m c hàm ............................................................................................................. 5
      4.1.1 Gadgets ................................................................................................................... 5
5     REST API ........................................................................................................................... 7
    5.1     Quy ñ nh chung ............................................................................................................ 7
      5.1.1 Quy ñ nh v vi c tr d li u v ................................................................................. 7
      5.1.2 Vi c c p quy n cho Application & ki m tra quy n .................................................... 8
    5.2     Danh m c các API h tr ............................................................................................. 8
      5.2.1 GET /social/rest/people/{guid}/@self........................................................................ 8
      5.2.2 GET /social/rest/people/@me/@self .......................................................................10
      5.2.3 GET /social/rest/people/{guid}/@friends .................................................................10
      5.2.4 POST /social/rest/activities/@me/@self/@app .......................................................11
      5.2.5 POST /social/rest/mediaitems/@me/@self .............................................................11
6     B ng chú gi i .....................................................................................................................13
7     Tham kh o: ........................................................................................................................13




                                                                      2
1 Gi i thi u
B API này g m các hàm c a Zing Open API phiên b n 1.0, ñã ñư c ñi u ch nh ñ tương thích
v i RESTful Protocol Specification v0.9, và b sung b JS API ñ ph c v cho Gadget theo mô
hình ho t ñ ng c a Open Social.


2    Mô hình ho t đ ng c a         ng d ng trên Zing Me theo chu n Open Social

                                                       Gadget
                                                  (OS App Front-End)




                                           1. JS API
                                                             5. JS API
                                           gadget.io
                                                              callback
                                         makeRequest()




                      2. OAuth
                     phone home
                       request

                     3. REST API
 Home Server          GET/POST
   (OS App              OAuth                      Zing Me Container
  Back-End)            Reserve
                     phone home


                      4. respond




     OS App
    Database




                             Hình 1: Mô hình ho t ñ ng c a OS App




                                              3
Chú gi i:

    •   Open Social App có th g m Gadget + Home Server ho c ch là Gadget. OS quy ñ nh
        quy n c a Gadget và Home Server ñ i v i Open Social data là gi ng nhau.

    •   Gadget giao ti p v i Home Server thông qua trung gian là Zing Me Container, s d ng
        JS API (namespace gadget.io). B ng cách này, thông qua cơ ch 2 Legged OAuth
        HomeServer ch c ch n các request nh n ñư c là ñ n t Gadget c a Home Server ñó,
        và Zing Me Container bi t ñư c request là ñ n t User nào (Owner).

    •   Home Server cũng có th giao ti p Server – Server v i Zing Me Container thông qua
        REST API.


3     Các th XML mà Zing OS c n h tr
3.1 <Module>
Là th g c

3.2 <ModulePrefs>
Ch a các thông tin mô t Gadget

Thu c tính             Mô t
title                  Tên c a Gadget, s ñư c hi n tr trên màn hình.
description            Mô t v Gadget.
author                 Tên tác gi


3.3 <Content>
Ch a mã ngu n c a Gadget

Thu c tính             Mô t
type                   ”html”
view                   V trí mà Gadget ñư c hi n th
preferred_height       Chi u cao m c ñ nh c a Gadget (pixel)
preferred_width        Chi u r ng m c ñ nh c a Gadget (pixel)



Mã ngu n c a Gadget ñư c ñ t trong th CDATA:

<![CDATA[          source_code       ]]>

VD:




                                              4
<Content view="home">
  <![CDATA[
    Hello, home view!
  ]]>
 </Content>


3.4 <Require>
Khai báo Gadget s s d ng các thư vi n JS nào

Thu c tính          Mô t
feature             Tên thư vi n


Các thư vi n h tr

Tên thư vi n        Mô t
flash               H tr nhúng Flash vào Gadget
tabs                H tr t o Tab cho giao di n c a Gadget




4 JS API

4.1 Danh m c hàm
4.1.1 Gadgets
Mô t : ñ i tư ng h tr cho Gadget

4.1.1.1 io
Mô t : ñ i tư ng h tr truy v n và nh n d li u t Home Server

4.1.1.1.1 makeRequest
    1. Mô t : Kh i t o Request ñ n HomeServer

   2. Vào

     Tên tham s                    Ki u d li u                Mô t
     url                           String                     url c a HomeServer
     callback                      Function                   Hàm s nh n d li u tr v


   3. Ra

       Không



                                            5
4. Ví d :


function makeRequest() {
  var params = {};
  var url = "http://graargh.returnstrue.com/buh/fetchme.php";
  gadgets.io.makeRequest(url, response);
};

function response(obj) {
  //obj.text contains the text of the response
  output(obj.text);
};

makeRequest();


4.1.1.2 Flash
Mô t : ð i tư ng h tr vi c nhúng Flash vào Gadget

4.1.1.2.1 embedFlash
    1. Mô t : Nhúng file Flash vào Gadget

   2. Vào

      Tên tham s                       Ki u d li u              Mô t
      swfUrl                           String                   url c a file Flash
      swfContainer                     String                   ID c a DOM s ch a Flash
      swfVersion                       Number                   Phiên b n FlashPlayer t i
                                                                thi u c n có
      opt_params                       Object                   Các ñ i tư ng ch a tham s
                                                                c a HTML


   3. Ra

       Không

   4. Ví d :

gadgets.flash.embedFlash(url, "flashcontainer", {

    swf_version: 6,
    id: "flashid",
    width: 300,
    height: 250
  })




                                                 6
5 REST API

5.1 Quy đ nh chung
5.1.1 Quy đ nh v vi c tr d li u v
    1. Các ñ i tư ng d li u tr v (Person, Activity, MediaItem,…) ñư c bi u di n dư i ñ nh
       d ng JSON, theo như quy ñ nh trong ph n “Data Representations” c a RESTful
       Protocol Specification v0.9.

      2. ð i tư ng g c (root element) ph i ch a các giá tr sau (theo ñ c t c a OpenSearch):

         Tên                         Mô t
         startIndex                  V trí c a item ñ u tiên c a k t qu tr v c a l n g i hàm
                                     này trong result set.
                                     VD: truy v n có result set g m 10 k t qu , startIndex=5 t c
                                     là item ñ u tiên trong l n g i hàm này là v trí th 5 trong
                                     10 k t qu ñó.

         itemsPerPage                S item th c s ñư c tr v trong l n g i hàm này.
         totalResults                T ng c ng các k t qu c a truy v n n u b qua vi c phân
                                     trang k t qu (t c là t ng s k t qu trong result set.
         entry                       Ch a k t qu tr v
                                     Có d ng m ng các item ho c 1 item tùy theo quy ñ nh lúc
                                     g i hàm.
                                     M i item là m t ñ i tư ng d li u.

VD:
{
  "startIndex" : 1,
  "itemsPerPage" : 10,
  "totalResults" : 100,
  "entry" : [
     {...first item...},
     {...second item...}
     ...
  ]
}

Trư ng h p ch tr v 1 item:

{
    "startIndex" : 1,
    "itemsPerPage" : 10,
    "totalResults" : 100,
    "entry" : {...only item...}
}

Ngoài ra có th ch a thêm các giá tr khác tùy ch n.


                                               7
3. N u xu t hi n l i, thì tr v mã l i tương ng như sau:

       #    Tên l i                          Mã l i
       1    G i hàm sai cú pháp              400 Bad Request
       2    Quá trình ch ng th c OAuth       401 Unauthorized
            có l i, ho c App không ñư c
            c p quy n
       3    App không ñư c c p quy n         403 Forbidden
            ñ th c hi n hành vi này
       4    Không tìm th y ñ i tư ng         404 Not Found
            ñư c yêu c u
       5    Hàm chưa ñư c Zing h tr          501 Not Implemented
       6    L i không xác ñ nh               500 Internal Server Error

5.1.2 Vi c c p quy n cho Application & ki m tra quy n
Hi n t i ZingMe chưa h tr User c p quy n cho t ng Application mà User ñã cài vào.

Do ñó quy n c a Application s căn c vào quy n m c ñ nh c a h th ng c p cho Application
ñó & các Permission do User c u hình trong trang “cài ñ t quy n riêng tư”.

Vi c ki m tra quy n (Authorization) ñư c tuân theo giao th c Two-legged OAuth.

5.2 Danh m c các API h tr
ði u ki n b o m t chung: User g i request ph i là OWNER, và OWNER ph i ñang ñăng nh p
vào Zing Me.

5.2.1 GET /social/rest/people/{guid}/@self
    1. Mô t : l y thông tin c a User d a trên ID.

   2. ði u ki n b o m t: {guid} ph i là ID c a OWNER ho c b n c a OWNER.

   3. Input:

     Tên tham s                       Mô t
     {guid}                           Id c a User


   4. Output: ð i tư ng People

VD: cách l y thông tin c a m t user

// t o ñ i tư ng osapi

$consumerKey = "c969713e3048fa919202961e1b9eb9c7";

$consumerSecret = "bc192fd03531094a78b60a91df93d5c7";

$userId = $_GET[“ownerId”]; // tham s này t có khi makeRequest           Gadget


                                               8
$storage = new osapiFileStorage('/tmp/osapi');

$provider = new osapiZingMeProvider();

$auth = new ZM_osapOAuth($consumerKey, $consumerSecret, $userId);

$osapi = new osapi($provider, $auth);



// ti n hành l y thông tin user

$extrafields = array( 'thumbnailUrl');

$self_request_params = array(

           'userId' => "tunguyen.it", // ID c a user (tương ng v i user name c a Zing Me).

           'groupId' => '@self', // l y thông tin c a user

           'fields' => $extrafields // các trư ng b sung thêm

);

$batch->add($osapi->people->get($self_request_params), 'self');

$result = $batch->execute(); //ch y request và nh n v k t qu

- K t qu :

     object(osapiPerson)[12]

      public 'displayName' => string 'Nguy n Thanh Tú' (length=18)

      public 'gender' => string 'male' (length=4)

      public 'id' => string 'tunguyen.it' (length=11)

      public 'name' =>

       array

        'familyName' => string 'Nguy n Thanh' (length=14)

        'givenName' => string 'Tú' (length=3)

        'formatted' => string 'Nguy n Thanh Tú' (length=18)

      public 'isOwner' => boolean true

      public 'isViewer' => boolean true


                                                        9
5.2.2 GET /social/rest/people/@me/@self
    1. Mô t : L y thông tin profile c a OWNER

   2. Vào: không có

   3. Ra

       ð i tư ng Person c a OWNER

VD: tương t như ví d trư c, thay userId b ng @me

5.2.3 GET /social/rest/people/{guid}/@friends
    1. Mô t : L y danh sách các b n c a user

   2. ði u ki n b o m t: {guid} ph i là ID c a OWNER.

   3. Vào:

     Tên tham s                       Mô t
     {guid}                           Id c a User
   4. Ra:

       Các ñ i tư ng Person

VD: l y danh sách b n bè c a 1 user

$extrafields = array( 'thumbnailUrl');
$friends_request_params = array(
           'userId' => "@me", // used id.
           'groupId' => '@friends', // @friends dùng ñ l y danh sách b n bè.
           'fields' => $extrafields, // các trư ng b sung thêm.
           'count' => 10, // s lư ng c n l y
           'startIndex' => 0 // v trí b t ñ u
);
$batch->add($osapi->people->get($friends_request_params), 'friends');
$result = $batch->execute();

- K t qu :
object(osapiCollection)[49]
    public 'list' =>
     array
       0 =>
        object(osapiPerson)[13]
         ...
       1 =>
        object(osapiPerson)[14]
         ...
       2 =>
        object(osapiPerson)[15]
         ...


                                              10
3 =>
         object(osapiPerson)[16]
          ...
        4 =>
         object(osapiPerson)[17]
          ...
        5 =>
         object(osapiPerson)[18]
          ...



5.2.4    POST /social/rest/activities/@me/@self/@app
        1. Mô t : G i ñi 1 activity (~Feed c a Zing).

        2. Vào:

        Tên tham s (trong ph n body   Mô t
        c a request)
        titleId                       Zing template bundle id
        templateParams                M ng các tham s có d ng
                                      <key, value>
        3. VD

- T o 1 feed trên Zing Me:

$createData = array();
$createData['message'] = "Hello message form testos.me.zing.vn";
$createData['actionLink'] = array(array(
              'text' => "Action link title",
              'href' => "http://testos.me.zing.vn")
);
$activity = new osapiActivity();
$activity->setId(195);
$activity->setField('createData', $createData);

$createParams = array(
          "userId" => "tunguyen.it", // tư ng nhà c a user c n t o feed
          "groupId" => '@self',
          "activity" => $activity,
);
$batch->add($osapi->activities->create($createParams), 'createActivity');
$result = $batch->execute();

K t qu : tr v feed id n u thao tác thành công, ngư c l i thì thao tác v l i.



5.2.5     POST /social/rest/mediaitems/@me/@self
        1. Mô t : T i 1 hình lên album m c ñ nh c a user ñang ñăng nh p.

                                               11
2. Vào:

      Tên tham s (trong ph n body     Mô t
      c a request)
      Content-Type                    ð nh d ng file hình (vd:
                                      “image/png” hay
                                      “image/gif”,…)
      mediaItem                       D li u nh phân c a hình
      3. Ra

         N u upload thành công thì tr v ñ i tư ng MediaItem



VD:

- T i 1 hình lên Zing Photo:

$data = file_get_contents('test.png');
 $user_params = array(
    'userId' => '@me',
    'groupId' => '@self',
    //'albumId' => '', // zing photo không c n tham s albumId
    'type' => 'IMAGE',
    'mediaItem' => $data,
    'contentType' => 'image/jpg'
 );
$batch->add($osapi->mediaItems->uploadContent($user_params), 'upload_mediaItem');
$result = $batch->execute();

*Note: vì Zing Photo không cho phép ñưa tham s album id nên param ñưa vào s không có
tham s này.

- K t qu : tr v ñ i tư ng MediaItem

array
    'albumId' => int 39861
    'id' => int 335711957
    'mimeType' => string 'image/jpg' (length=9)
    'thumbnailUrl' => string 'http://img1-
photo.me.zing.vn/upload/original/2010/08/12/18/1281611819762494268_182_0.jpg' (length=88)
    'type' => string 'IMAGE' (length=5)
    'url' => string 'http://img1-
photo.me.zing.vn/upload/original/2010/08/12/18/1281611819762494268.jpg' (length=82)




                                             12
6 B ng chú gi i
Tên khái ni m                                     Ý nghĩa
OS                                                Open Social
Open Social Application/ App/ OS App                ng d ng m ng xã h i theo chu n Open
                                                  Social
Zing OS API                                       Các hàm API c a chu n Open Social mà Zing
                                                  Me ñã h tr
Connection                                        Hai user trong Zing g i là có “connection” v i
                                                  nhau n u:
                                                  - Có m i quan h Friend
                                                  - Có m i quan h Fan
Activity                                          Tương ñương Feed c a Zing
Item                                              ð i tư ng d li u chu n ñư c mô t trong
                                                  RESTful Protocol Specification v0.9 (VD:
                                                  Person, Activity, MediaItem,…)
OWNER                                             User s h u App hi n th i ñang ch y
VIEWER                                            User ñang s d ng, hi n Zing ch cho phép
                                                  OWNER=VIEWER




7 Tham kh o:
1.   OpenSocial Specification v0.9 & JS Function

http://www.opensocial.org/Technical-Resources/opensocial-spec-v09/OpenSocial-
Specification.html

2.   OpenSocial RESTful Protocol Specification v0.9

http://www.opensocial.org/Technical-Resources/opensocial-spec-v09/REST-API.html

3.   OAuth

Two-legged OAuth:

http://sites.google.com/site/oauthgoog/2leggedoauth/2opensocialrestapi

https://www.google.com/gadgets/directory/verify

http://wiki.opensocial.org/index.php?title=Validating_Signed_Requests

http://developer.constantcontact.com/book/export/html/279

4.   Opensocial-php-client


                                              13
http://code.google.com/p/opensocial-php-
client/source/browse/trunk/src/examples/listFriends.php

5.   Gadget

http://code.google.com/apis/gadgets/docs/ui.html

6.   XML

http://code.google.com/apis/gadgets/docs/reference.html

                                                                  Nhóm Zing Me Open Social

                                                          Nguy n H ng H i – Nguy n Thanh Tú




                                              14

More Related Content

PPT
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
PPT
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
PPT
Bài 10: Custom Tag - Lập Trình Mạng Nâng Cao
PPT
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
PPT
Bài 11: JSF-1 - Lập Trình Mạng Nâng Cao
PPT
Bài 5: Java Bean - Lập Trình Mạng Nâng Cao
PPT
Jsp java bean
PPT
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 10: Custom Tag - Lập Trình Mạng Nâng Cao
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
Bài 11: JSF-1 - Lập Trình Mạng Nâng Cao
Bài 5: Java Bean - Lập Trình Mạng Nâng Cao
Jsp java bean
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Viewers also liked (8)

PDF
Zing me overview
PPTX
Quản lý Zing Me fanpage một cách hiệu quả
PPT
Community building on Zing Me
PPT
Zing me credential
PPTX
Zing Me Workshop 11082012
PPTX
Zing Me cung cấp gói hỗ trợ miễn phí cho Doanh nghiệp
PDF
Zing Me Platform Policy
PDF
Sơ lược kiến trúc hệ thống Zing Me
Zing me overview
Quản lý Zing Me fanpage một cách hiệu quả
Community building on Zing Me
Zing me credential
Zing Me Workshop 11082012
Zing Me cung cấp gói hỗ trợ miễn phí cho Doanh nghiệp
Zing Me Platform Policy
Sơ lược kiến trúc hệ thống Zing Me
Ad

Similar to Zing osapi v1.3.3 (20)

PDF
PDF
Luận văn: Kỹ thuật điều tra phân tích tấn công web, HAY
PDF
Asp control
PDF
Zing me open social training 01
PPTX
Php crawler and parser
PPTX
introduction to java script, history, functionalities
PDF
Os php-5.3new1
PPTX
Sử dụng dịch vụ crawler và parser trong PHP
PDF
Technical note playframework_documentation_working with play - java_vn
PPTX
Slide CDCS-chuyen_de_co_so_HVKTMM123.pptx
PPT
Asp
PDF
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPT
PDF
Idoc.vn giao trinh-aspnet-nang-cao
PDF
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
PDF
BÀI 3 Thiết kế web cho di động với dreamweaver CS5 & Jquery - Giáo trình FPT
PDF
Giao trinh java script
PDF
Javascript tong-hop a-z
PPT
Ung dun web chuong 2
PPT
VTV Mobile Performace Test
Luận văn: Kỹ thuật điều tra phân tích tấn công web, HAY
Asp control
Zing me open social training 01
Php crawler and parser
introduction to java script, history, functionalities
Os php-5.3new1
Sử dụng dịch vụ crawler và parser trong PHP
Technical note playframework_documentation_working with play - java_vn
Slide CDCS-chuyen_de_co_so_HVKTMM123.pptx
Asp
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPT
Idoc.vn giao trinh-aspnet-nang-cao
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
BÀI 3 Thiết kế web cho di động với dreamweaver CS5 & Jquery - Giáo trình FPT
Giao trinh java script
Javascript tong-hop a-z
Ung dun web chuong 2
VTV Mobile Performace Test
Ad

Recently uploaded (10)

PPTX
dffffffffffffffffffffffffffffffffffffffffffffffffffffffff
PPTX
White and Purple Modern Artificial Intelligence Presentation (1).pptx
PPTX
MKTQT-slide-sv.pptxsdfsdfdfsdfsdfaesesse
PDF
slide Quản trị Marketing TV.pdf sđfsdfsdfsd
PDF
HỒ SƠ NĂNG LỰC CÔNG TY TNHH DUY NGUYỄN EVENT
PPTX
+10 ĐIỂM CÔ LOAN76565765676567565656756576.pptx
PPTX
2. Bướu giáp.pptxxxxxxxxxxxxxxxxxxxx
PDF
So-tay-tu-vung-CMKTQT-IFRS. Sổ tay từ vựng
PPT
Bai 2 - Mô hình nhận thức thái độ hành vi .ppt
PDF
The OCE Advertising, Media & Event Agency Profile Business
dffffffffffffffffffffffffffffffffffffffffffffffffffffffff
White and Purple Modern Artificial Intelligence Presentation (1).pptx
MKTQT-slide-sv.pptxsdfsdfdfsdfsdfaesesse
slide Quản trị Marketing TV.pdf sđfsdfsdfsd
HỒ SƠ NĂNG LỰC CÔNG TY TNHH DUY NGUYỄN EVENT
+10 ĐIỂM CÔ LOAN76565765676567565656756576.pptx
2. Bướu giáp.pptxxxxxxxxxxxxxxxxxxxx
So-tay-tu-vung-CMKTQT-IFRS. Sổ tay từ vựng
Bai 2 - Mô hình nhận thức thái độ hành vi .ppt
The OCE Advertising, Media & Event Agency Profile Business

Zing osapi v1.3.3

  • 1. CÔNG TY VNG ZING ME OPENSOCIAL API VERSION 1.3.3 Nhóm Zing Me Open Social TP. HCM 10/2010 1
  • 2. M CL C 1 Gi i thi u ............................................................................................................................ 3 2 Mô hình ho t ñ ng c a ng d ng trên Zing Me theo chu n Open Social ........................... 3 3 Các th XML mà Zing OS c n h tr .................................................................................. 4 3.1 <Module> ..................................................................................................................... 4 3.2 <ModulePrefs> ............................................................................................................. 4 3.3 <Content> .................................................................................................................... 4 3.4 <Require> .................................................................................................................... 5 4 JS API................................................................................................................................. 5 4.1 Danh m c hàm ............................................................................................................. 5 4.1.1 Gadgets ................................................................................................................... 5 5 REST API ........................................................................................................................... 7 5.1 Quy ñ nh chung ............................................................................................................ 7 5.1.1 Quy ñ nh v vi c tr d li u v ................................................................................. 7 5.1.2 Vi c c p quy n cho Application & ki m tra quy n .................................................... 8 5.2 Danh m c các API h tr ............................................................................................. 8 5.2.1 GET /social/rest/people/{guid}/@self........................................................................ 8 5.2.2 GET /social/rest/people/@me/@self .......................................................................10 5.2.3 GET /social/rest/people/{guid}/@friends .................................................................10 5.2.4 POST /social/rest/activities/@me/@self/@app .......................................................11 5.2.5 POST /social/rest/mediaitems/@me/@self .............................................................11 6 B ng chú gi i .....................................................................................................................13 7 Tham kh o: ........................................................................................................................13 2
  • 3. 1 Gi i thi u B API này g m các hàm c a Zing Open API phiên b n 1.0, ñã ñư c ñi u ch nh ñ tương thích v i RESTful Protocol Specification v0.9, và b sung b JS API ñ ph c v cho Gadget theo mô hình ho t ñ ng c a Open Social. 2 Mô hình ho t đ ng c a ng d ng trên Zing Me theo chu n Open Social Gadget (OS App Front-End) 1. JS API 5. JS API gadget.io callback makeRequest() 2. OAuth phone home request 3. REST API Home Server GET/POST (OS App OAuth Zing Me Container Back-End) Reserve phone home 4. respond OS App Database Hình 1: Mô hình ho t ñ ng c a OS App 3
  • 4. Chú gi i: • Open Social App có th g m Gadget + Home Server ho c ch là Gadget. OS quy ñ nh quy n c a Gadget và Home Server ñ i v i Open Social data là gi ng nhau. • Gadget giao ti p v i Home Server thông qua trung gian là Zing Me Container, s d ng JS API (namespace gadget.io). B ng cách này, thông qua cơ ch 2 Legged OAuth HomeServer ch c ch n các request nh n ñư c là ñ n t Gadget c a Home Server ñó, và Zing Me Container bi t ñư c request là ñ n t User nào (Owner). • Home Server cũng có th giao ti p Server – Server v i Zing Me Container thông qua REST API. 3 Các th XML mà Zing OS c n h tr 3.1 <Module> Là th g c 3.2 <ModulePrefs> Ch a các thông tin mô t Gadget Thu c tính Mô t title Tên c a Gadget, s ñư c hi n tr trên màn hình. description Mô t v Gadget. author Tên tác gi 3.3 <Content> Ch a mã ngu n c a Gadget Thu c tính Mô t type ”html” view V trí mà Gadget ñư c hi n th preferred_height Chi u cao m c ñ nh c a Gadget (pixel) preferred_width Chi u r ng m c ñ nh c a Gadget (pixel) Mã ngu n c a Gadget ñư c ñ t trong th CDATA: <![CDATA[ source_code ]]> VD: 4
  • 5. <Content view="home"> <![CDATA[ Hello, home view! ]]> </Content> 3.4 <Require> Khai báo Gadget s s d ng các thư vi n JS nào Thu c tính Mô t feature Tên thư vi n Các thư vi n h tr Tên thư vi n Mô t flash H tr nhúng Flash vào Gadget tabs H tr t o Tab cho giao di n c a Gadget 4 JS API 4.1 Danh m c hàm 4.1.1 Gadgets Mô t : ñ i tư ng h tr cho Gadget 4.1.1.1 io Mô t : ñ i tư ng h tr truy v n và nh n d li u t Home Server 4.1.1.1.1 makeRequest 1. Mô t : Kh i t o Request ñ n HomeServer 2. Vào Tên tham s Ki u d li u Mô t url String url c a HomeServer callback Function Hàm s nh n d li u tr v 3. Ra Không 5
  • 6. 4. Ví d : function makeRequest() { var params = {}; var url = "http://graargh.returnstrue.com/buh/fetchme.php"; gadgets.io.makeRequest(url, response); }; function response(obj) { //obj.text contains the text of the response output(obj.text); }; makeRequest(); 4.1.1.2 Flash Mô t : ð i tư ng h tr vi c nhúng Flash vào Gadget 4.1.1.2.1 embedFlash 1. Mô t : Nhúng file Flash vào Gadget 2. Vào Tên tham s Ki u d li u Mô t swfUrl String url c a file Flash swfContainer String ID c a DOM s ch a Flash swfVersion Number Phiên b n FlashPlayer t i thi u c n có opt_params Object Các ñ i tư ng ch a tham s c a HTML 3. Ra Không 4. Ví d : gadgets.flash.embedFlash(url, "flashcontainer", { swf_version: 6, id: "flashid", width: 300, height: 250 }) 6
  • 7. 5 REST API 5.1 Quy đ nh chung 5.1.1 Quy đ nh v vi c tr d li u v 1. Các ñ i tư ng d li u tr v (Person, Activity, MediaItem,…) ñư c bi u di n dư i ñ nh d ng JSON, theo như quy ñ nh trong ph n “Data Representations” c a RESTful Protocol Specification v0.9. 2. ð i tư ng g c (root element) ph i ch a các giá tr sau (theo ñ c t c a OpenSearch): Tên Mô t startIndex V trí c a item ñ u tiên c a k t qu tr v c a l n g i hàm này trong result set. VD: truy v n có result set g m 10 k t qu , startIndex=5 t c là item ñ u tiên trong l n g i hàm này là v trí th 5 trong 10 k t qu ñó. itemsPerPage S item th c s ñư c tr v trong l n g i hàm này. totalResults T ng c ng các k t qu c a truy v n n u b qua vi c phân trang k t qu (t c là t ng s k t qu trong result set. entry Ch a k t qu tr v Có d ng m ng các item ho c 1 item tùy theo quy ñ nh lúc g i hàm. M i item là m t ñ i tư ng d li u. VD: { "startIndex" : 1, "itemsPerPage" : 10, "totalResults" : 100, "entry" : [ {...first item...}, {...second item...} ... ] } Trư ng h p ch tr v 1 item: { "startIndex" : 1, "itemsPerPage" : 10, "totalResults" : 100, "entry" : {...only item...} } Ngoài ra có th ch a thêm các giá tr khác tùy ch n. 7
  • 8. 3. N u xu t hi n l i, thì tr v mã l i tương ng như sau: # Tên l i Mã l i 1 G i hàm sai cú pháp 400 Bad Request 2 Quá trình ch ng th c OAuth 401 Unauthorized có l i, ho c App không ñư c c p quy n 3 App không ñư c c p quy n 403 Forbidden ñ th c hi n hành vi này 4 Không tìm th y ñ i tư ng 404 Not Found ñư c yêu c u 5 Hàm chưa ñư c Zing h tr 501 Not Implemented 6 L i không xác ñ nh 500 Internal Server Error 5.1.2 Vi c c p quy n cho Application & ki m tra quy n Hi n t i ZingMe chưa h tr User c p quy n cho t ng Application mà User ñã cài vào. Do ñó quy n c a Application s căn c vào quy n m c ñ nh c a h th ng c p cho Application ñó & các Permission do User c u hình trong trang “cài ñ t quy n riêng tư”. Vi c ki m tra quy n (Authorization) ñư c tuân theo giao th c Two-legged OAuth. 5.2 Danh m c các API h tr ði u ki n b o m t chung: User g i request ph i là OWNER, và OWNER ph i ñang ñăng nh p vào Zing Me. 5.2.1 GET /social/rest/people/{guid}/@self 1. Mô t : l y thông tin c a User d a trên ID. 2. ði u ki n b o m t: {guid} ph i là ID c a OWNER ho c b n c a OWNER. 3. Input: Tên tham s Mô t {guid} Id c a User 4. Output: ð i tư ng People VD: cách l y thông tin c a m t user // t o ñ i tư ng osapi $consumerKey = "c969713e3048fa919202961e1b9eb9c7"; $consumerSecret = "bc192fd03531094a78b60a91df93d5c7"; $userId = $_GET[“ownerId”]; // tham s này t có khi makeRequest Gadget 8
  • 9. $storage = new osapiFileStorage('/tmp/osapi'); $provider = new osapiZingMeProvider(); $auth = new ZM_osapOAuth($consumerKey, $consumerSecret, $userId); $osapi = new osapi($provider, $auth); // ti n hành l y thông tin user $extrafields = array( 'thumbnailUrl'); $self_request_params = array( 'userId' => "tunguyen.it", // ID c a user (tương ng v i user name c a Zing Me). 'groupId' => '@self', // l y thông tin c a user 'fields' => $extrafields // các trư ng b sung thêm ); $batch->add($osapi->people->get($self_request_params), 'self'); $result = $batch->execute(); //ch y request và nh n v k t qu - K t qu : object(osapiPerson)[12] public 'displayName' => string 'Nguy n Thanh Tú' (length=18) public 'gender' => string 'male' (length=4) public 'id' => string 'tunguyen.it' (length=11) public 'name' => array 'familyName' => string 'Nguy n Thanh' (length=14) 'givenName' => string 'Tú' (length=3) 'formatted' => string 'Nguy n Thanh Tú' (length=18) public 'isOwner' => boolean true public 'isViewer' => boolean true 9
  • 10. 5.2.2 GET /social/rest/people/@me/@self 1. Mô t : L y thông tin profile c a OWNER 2. Vào: không có 3. Ra ð i tư ng Person c a OWNER VD: tương t như ví d trư c, thay userId b ng @me 5.2.3 GET /social/rest/people/{guid}/@friends 1. Mô t : L y danh sách các b n c a user 2. ði u ki n b o m t: {guid} ph i là ID c a OWNER. 3. Vào: Tên tham s Mô t {guid} Id c a User 4. Ra: Các ñ i tư ng Person VD: l y danh sách b n bè c a 1 user $extrafields = array( 'thumbnailUrl'); $friends_request_params = array( 'userId' => "@me", // used id. 'groupId' => '@friends', // @friends dùng ñ l y danh sách b n bè. 'fields' => $extrafields, // các trư ng b sung thêm. 'count' => 10, // s lư ng c n l y 'startIndex' => 0 // v trí b t ñ u ); $batch->add($osapi->people->get($friends_request_params), 'friends'); $result = $batch->execute(); - K t qu : object(osapiCollection)[49] public 'list' => array 0 => object(osapiPerson)[13] ... 1 => object(osapiPerson)[14] ... 2 => object(osapiPerson)[15] ... 10
  • 11. 3 => object(osapiPerson)[16] ... 4 => object(osapiPerson)[17] ... 5 => object(osapiPerson)[18] ... 5.2.4 POST /social/rest/activities/@me/@self/@app 1. Mô t : G i ñi 1 activity (~Feed c a Zing). 2. Vào: Tên tham s (trong ph n body Mô t c a request) titleId Zing template bundle id templateParams M ng các tham s có d ng <key, value> 3. VD - T o 1 feed trên Zing Me: $createData = array(); $createData['message'] = "Hello message form testos.me.zing.vn"; $createData['actionLink'] = array(array( 'text' => "Action link title", 'href' => "http://testos.me.zing.vn") ); $activity = new osapiActivity(); $activity->setId(195); $activity->setField('createData', $createData); $createParams = array( "userId" => "tunguyen.it", // tư ng nhà c a user c n t o feed "groupId" => '@self', "activity" => $activity, ); $batch->add($osapi->activities->create($createParams), 'createActivity'); $result = $batch->execute(); K t qu : tr v feed id n u thao tác thành công, ngư c l i thì thao tác v l i. 5.2.5 POST /social/rest/mediaitems/@me/@self 1. Mô t : T i 1 hình lên album m c ñ nh c a user ñang ñăng nh p. 11
  • 12. 2. Vào: Tên tham s (trong ph n body Mô t c a request) Content-Type ð nh d ng file hình (vd: “image/png” hay “image/gif”,…) mediaItem D li u nh phân c a hình 3. Ra N u upload thành công thì tr v ñ i tư ng MediaItem VD: - T i 1 hình lên Zing Photo: $data = file_get_contents('test.png'); $user_params = array( 'userId' => '@me', 'groupId' => '@self', //'albumId' => '', // zing photo không c n tham s albumId 'type' => 'IMAGE', 'mediaItem' => $data, 'contentType' => 'image/jpg' ); $batch->add($osapi->mediaItems->uploadContent($user_params), 'upload_mediaItem'); $result = $batch->execute(); *Note: vì Zing Photo không cho phép ñưa tham s album id nên param ñưa vào s không có tham s này. - K t qu : tr v ñ i tư ng MediaItem array 'albumId' => int 39861 'id' => int 335711957 'mimeType' => string 'image/jpg' (length=9) 'thumbnailUrl' => string 'http://img1- photo.me.zing.vn/upload/original/2010/08/12/18/1281611819762494268_182_0.jpg' (length=88) 'type' => string 'IMAGE' (length=5) 'url' => string 'http://img1- photo.me.zing.vn/upload/original/2010/08/12/18/1281611819762494268.jpg' (length=82) 12
  • 13. 6 B ng chú gi i Tên khái ni m Ý nghĩa OS Open Social Open Social Application/ App/ OS App ng d ng m ng xã h i theo chu n Open Social Zing OS API Các hàm API c a chu n Open Social mà Zing Me ñã h tr Connection Hai user trong Zing g i là có “connection” v i nhau n u: - Có m i quan h Friend - Có m i quan h Fan Activity Tương ñương Feed c a Zing Item ð i tư ng d li u chu n ñư c mô t trong RESTful Protocol Specification v0.9 (VD: Person, Activity, MediaItem,…) OWNER User s h u App hi n th i ñang ch y VIEWER User ñang s d ng, hi n Zing ch cho phép OWNER=VIEWER 7 Tham kh o: 1. OpenSocial Specification v0.9 & JS Function http://www.opensocial.org/Technical-Resources/opensocial-spec-v09/OpenSocial- Specification.html 2. OpenSocial RESTful Protocol Specification v0.9 http://www.opensocial.org/Technical-Resources/opensocial-spec-v09/REST-API.html 3. OAuth Two-legged OAuth: http://sites.google.com/site/oauthgoog/2leggedoauth/2opensocialrestapi https://www.google.com/gadgets/directory/verify http://wiki.opensocial.org/index.php?title=Validating_Signed_Requests http://developer.constantcontact.com/book/export/html/279 4. Opensocial-php-client 13
  • 14. http://code.google.com/p/opensocial-php- client/source/browse/trunk/src/examples/listFriends.php 5. Gadget http://code.google.com/apis/gadgets/docs/ui.html 6. XML http://code.google.com/apis/gadgets/docs/reference.html Nhóm Zing Me Open Social Nguy n H ng H i – Nguy n Thanh Tú 14