สำคัญ: เอกสารนี้เขียนก่อนปี 2012 ตัวเลือกการตรวจสอบสิทธิ์ ดังที่อธิบายไว้ในเอกสารนี้ (OAuth 1.0, AuthSub และ ClientLogin) ได้รับการ เลิกใช้งานแล้วอย่างเป็นทางการ ตั้งแต่วันที่ 20 เมษายน 2012 และไม่สามารถใช้ได้อีกต่อไป เราขอแนะนำให้คุณย้ายข้อมูลไปยัง OAuth 2.0 โดยเร็วที่สุด
Google Sites Data API ช่วยให้แอปพลิเคชันไคลเอ็นต์เข้าถึง เผยแพร่ และแก้ไขเนื้อหาภายในเว็บไซต์จาก Google Sites ได้ นอกจากนี้ แอปพลิเคชันไคลเอ็นต์ของคุณยังสามารถขอรายการกิจกรรมล่าสุด เรียกประวัติการแก้ไข และดาวน์โหลดไฟล์แนบได้ด้วย
นอกเหนือจากการให้ข้อมูลพื้นฐานเกี่ยวกับความสามารถของ Sites Data API แล้ว คู่มือนี้ยังให้ตัวอย่างสำหรับการโต้ตอบกับ API โดยใช้ไลบรารีของไคลเอ็นต์ Python สำหรับความช่วยเหลือในการตั้งค่าไลบรารีของไคลเอ็นต์ โปรดดู การเริ่มต้นใช้งานไลบรารีของไคลเอ็นต์ Google Data Python หากคุณสนใจ เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับโปรโตคอลพื้นฐานที่ไลบรารีของไคลเอ็นต์ Python ใช้ในการโต้ตอบกับ Sites API เวอร์ชันคลาสสิก โปรดดู คู่มือโปรโตคอล
ผู้ชม
เอกสารนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ที่ต้องการเขียนแอปพลิเคชันไคลเอ็นต์ที่โต้ตอบกับ Google Sites โดยใช้ไลบรารีของไคลเอ็นต์ Google Data Python
เริ่มต้นใช้งาน
หากต้องการใช้ไลบรารีของไคลเอ็นต์ Python คุณจะต้องมี Python 2.2+ และโมดูลที่แสดงอยู่ในหน้า wiki DependencyModules หลังจากดาวน์โหลดไลบรารีของไคลเอ็นต์แล้ว โปรดดูการเริ่มต้นใช้งานไลบรารี Google Data Python เพื่อรับความช่วยเหลือในการติดตั้งและใช้งานไคลเอ็นต์
การเรียกใช้ตัวอย่าง
ตัวอย่างการใช้งานแบบเต็มอยู่ในไดเรกทอรีย่อย samples/sites
ของที่เก็บ Mercurial ของโปรเจ็กต์
(/samples/sites/sites_example.py).
เรียกใช้ตัวอย่างดังนี้
python sites_example.py # or python sites_example.py --site [sitename] --domain [domain or "site"] --debug [prints debug info if set]
หากไม่มีการแฟล็กที่จำเป็น แอปจะแจ้งให้คุณป้อนค่าเหล่านั้น ตัวอย่างนี้อนุญาตให้ผู้ใช้ดำเนินการหลายอย่าง ซึ่ง สาธิตวิธีใช้ Sites API แบบคลาสสิก ดังนั้น คุณจะต้องตรวจสอบสิทธิ์เพื่อดำเนินการบางอย่าง (เช่น การแก้ไขเนื้อหา) โปรแกรมจะ ยังแจ้งให้คุณตรวจสอบสิทธิ์ผ่าน AuthSub, OAuth หรือ ClientLogin
หากต้องการรวมตัวอย่างในคู่มือนี้ไว้ในโค้ดของคุณเอง คุณจะต้องมีคำสั่ง import
ดังต่อไปนี้
import atom.data import gdata.sites.client import gdata.sites.data
และคุณจะต้องตั้งค่าออบเจ็กต์ SitesClient
ด้วย ซึ่งแสดงถึงการเชื่อมต่อไคลเอ็นต์กับ Sites API แบบคลาสสิก
ส่งชื่อแอปพลิเคชันของคุณและชื่อเว็บสเปซของเว็บไซต์ (จาก URL ของเว็บไซต์):
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1', site='yourSiteName')
หากต้องการทำงานกับเว็บไซต์ที่โฮสต์ในโดเมน G Suite ให้ตั้งค่าโดเมนโดยใช้พารามิเตอร์ domain
ดังนี้
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1', site='yourSiteName', domain='example.com')
ในตัวอย่างข้างต้น จะใช้อาร์กิวเมนต์ source
หรือไม่ก็ได้ แต่เราแนะนำให้ใช้เพื่อวัตถุประสงค์ในการบันทึก ควร
ให้ใช้รูปแบบ company-applicationname-version
หมายเหตุ: คำแนะนำที่เหลือจะถือว่าคุณสร้างออบเจ็กต์ SitesClient
ในตัวแปร client
การตรวจสอบสิทธิ์กับ Sites API แบบคลาสสิก
คุณจะใช้ไลบรารีของไคลเอ็นต์ Python กับฟีดสาธารณะหรือฟีดส่วนตัวก็ได้ Sites Data API ให้สิทธิ์การเข้าถึงแบบส่วนตัวและสาธารณะ ทั้งนี้ขึ้นอยู่กับสิทธิ์ของไซต์และการดำเนินการที่คุณพยายามทำ ตัวอย่างเช่น คุณอาจสามารถอ่านฟีดเนื้อหาของ ไซต์สาธารณะ แต่ไม่ทำการอัปเดต - เป็นบางอย่างที่ต้องใช้ไคลเอ็นต์ที่ได้รับการตรวจสอบสิทธิ์ ซึ่งสามารถดำเนินการได้ผ่านทาง การตรวจสอบสิทธิ์ชื่อผู้ใช้/รหัสผ่าน ClientLogin, AuthSub หรือ OAuth
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับ AuthSub, OAuth และ ClientLogin ในภาพรวมการตรวจสอบสิทธิ์ Google Data API
AuthSub สำหรับเว็บแอปพลิเคชัน
แอปพลิเคชันไคลเอ็นต์ควรใช้ การตรวจสอบสิทธิ์ AuthSub สำหรับเว็บแอปพลิเคชัน ตรวจสอบสิทธิ์ผู้ใช้ในบัญชี Google หรือ G Suite โอเปอเรเตอร์ไม่จำเป็นต้องเข้าถึงชื่อผู้ใช้และรหัสผ่านสำหรับผู้ใช้ Google Sites มีเพียง ต้องระบุโทเค็น AuthSub
ดูวิธีการรวม AuthSub ไว้ในเว็บแอปพลิเคชัน
ขอโทเค็นแบบใช้ครั้งเดียว
เมื่อผู้ใช้เข้าชมแอปพลิเคชันเป็นครั้งแรก ผู้ใช้จะต้องตรวจสอบสิทธิ์ โดยปกติแล้ว นักพัฒนาซอฟต์แวร์จะพิมพ์ข้อความและลิงก์ที่นำผู้ใช้ไป
ไปยังหน้าการอนุมัติ AuthSub เพื่อตรวจสอบสิทธิ์ผู้ใช้และขอสิทธิ์เข้าถึงเอกสาร ไลบรารีของไคลเอ็นต์ Google Data Python มีฟังก์ชัน
generate_auth_sub_url()
เพื่อสร้าง URL นี้ โค้ดด้านล่างตั้งค่าลิงก์ไปยังหน้า AuthSubRequest
import gdata.gauth def GetAuthSubUrl(): next = 'http://www.example.com/myapp.py' scopes = ['https://sites.google.com/feeds/'] secure = True session = True return gdata.gauth.generate_auth_sub_url(next, scopes, secure=secure, session=session) print '<a href="%s">Login to your Google account</a>' % GetAuthSubUrl()
หากต้องการตรวจสอบสิทธิ์ผู้ใช้ในโดเมนที่โฮสต์ G Suite ให้ส่งชื่อโดเมนไปยัง generate_auth_sub_url()
ดังนี้
def GetAuthSubUrl(): domain = 'example.com' next = 'http://www.example.com/myapp.py' scopes = ['https://sites.google.com/feeds/'] secure = True session = True return gdata.gauth.generate_auth_sub_url(next, scopes, secure=secure, session=session, domain=domain)
เมธอด generate_auth_sub_url()
ใช้พารามิเตอร์หลายตัว (สอดคล้องกับพารามิเตอร์การค้นหาที่ใช้โดย
เครื่องจัดการ AuthSubRequest):
- URL ถัดไป ซึ่งเป็น URL ที่ Google จะเปลี่ยนเส้นทางไป
หลังจากที่ผู้ใช้เข้าสู่ระบบบัญชีของตนและให้สิทธิ์เข้าถึง
http://www.example.com/myapp.py
ในตัวอย่างด้านบน - ขอบเขต —
https://sites.google.com/feeds/
- secure เป็นบูลีนที่ระบุว่าจะใช้โทเค็นในโหมดปลอดภัยและลงทะเบียนหรือไม่
True
ในตัวอย่างด้านบน - session เป็นบูลีนที่ 2 เพื่อระบุว่าจะมีการแลกเปลี่ยนโทเค็นแบบใช้ครั้งเดียวเป็นโทเค็นเซสชันในภายหลังหรือไม่
True
ในตัวอย่างด้านบน
การอัปเกรดเป็นโทเค็นเซสชัน
โปรดดูการใช้ AuthSub กับไลบรารีของไคลเอ็นต์ Google Data API
การดึงข้อมูลเกี่ยวกับโทเค็นเซสชัน
โปรดดูการใช้ AuthSub กับไลบรารีของไคลเอ็นต์ Google Data API
การเพิกถอนโทเค็นเซสชัน
โปรดดูการใช้ AuthSub กับไลบรารีของไคลเอ็นต์ Google Data API
เคล็ดลับ: เมื่อแอปพลิเคชันได้รับโทเค็นเซสชันที่มีอายุการใช้งานยาวนานเรียบร้อยแล้ว
จัดเก็บโทเค็นนั้นในฐานข้อมูลเพื่อเรียกคืนการใช้งานในภายหลัง โดยไม่จำเป็นต้องส่งผู้ใช้กลับไปยัง AuthSub ในทุกการเรียกใช้แอปพลิเคชัน
ใช้ client.auth_token = gdata.gauth.AuthSubToken(TOKEN_STR)
เพื่อตั้งค่าโทเค็นที่มีอยู่ในไคลเอ็นต์
OAuth สำหรับเว็บหรือแอปพลิเคชันที่ติดตั้ง/อุปกรณ์เคลื่อนที่
OAuth สามารถใช้เป็นทางเลือกแทน AuthSub ได้และมีไว้สำหรับเว็บแอปพลิเคชัน OAuth จะคล้ายกับการใช้โหมดที่ปลอดภัยและลงทะเบียนของ AuthSub ว่าคำขอข้อมูลทั้งหมดต้องลงชื่อแบบดิจิทัลและต้องลงทะเบียนโดเมนของคุณ
ดูวิธีการรวม OAuth ไว้ในแอปพลิเคชันที่ติดตั้ง
กำลังดึงข้อมูลโทเค็นคำขอ
โปรดดูการใช้ OAuth กับไลบรารีไคลเอ็นต์ Google Data API
การให้สิทธิ์โทเค็นคำขอ
โปรดดูการใช้ OAuth กับไลบรารีไคลเอ็นต์ Google Data API
การอัปเกรดเป็นโทเค็นเพื่อการเข้าถึง
โปรดดูการใช้ OAuth กับไลบรารีไคลเอ็นต์ Google Data API
เคล็ดลับ: เมื่อแอปพลิเคชันได้รับโทเค็นเพื่อการเข้าถึง OAuth แล้ว
จัดเก็บโทเค็นนั้นในฐานข้อมูลเพื่อเรียกคืนการใช้งานในภายหลัง โดยไม่จำเป็นต้องส่งผู้ใช้กลับผ่าน OAuth ในทุกการเรียกใช้แอปพลิเคชัน
ใช้ client.auth_token = gdata.oauth.OAuthToken(TOKEN_STR, TOKEN_SECRET)
เพื่อตั้งค่าโทเค็นที่มีอยู่ในไคลเอ็นต์
ClientLogin สำหรับแอปพลิเคชันที่ติดตั้ง/บนอุปกรณ์เคลื่อนที่
ควรใช้ ClientLogin โดยแอปพลิเคชันที่ติดตั้งหรือแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ซึ่งต้อง ตรวจสอบสิทธิ์ผู้ใช้ในบัญชี Google เมื่อเรียกใช้ครั้งแรก แอปพลิเคชันจะแจ้งให้ผู้ใช้ป้อนชื่อผู้ใช้/รหัสผ่าน ในคำขอที่ตามมา มีการอ้างอิงโทเค็นการตรวจสอบสิทธิ์
ดูวิธีการรวม ClientLogin ไว้ในแอปพลิเคชันที่ติดตั้ง
หากต้องการใช้ ClientLogin ให้เรียกใช้
ClientLogin()
เมธอดของออบเจ็กต์ SitesClient
ซึ่งรับค่ามาจาก
GDClient
ระบุอีเมลและ
รหัสผ่านของผู้ใช้ที่คุณเป็นตัวแทนของลูกค้าในการส่งคำขอ เช่น
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1') client.ClientLogin('user@gmail.com', 'pa$$word', client.source);
เคล็ดลับ: เมื่อแอปพลิเคชันตรวจสอบสิทธิ์ผู้ใช้เป็นครั้งแรกเรียบร้อยแล้ว ให้จัดเก็บโทเค็นการตรวจสอบสิทธิ์ในฐานข้อมูลเพื่อเรียกคืนการใช้งานในภายหลัง โดยไม่จำเป็นต้องแจ้งรหัสผ่านให้ผู้ใช้ทราบทุกครั้งที่เรียกใช้แอปพลิเคชันของคุณ โปรดดูข้อมูลเพิ่มเติมที่การเรียกโทเค็นการตรวจสอบสิทธิ์
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ClientLogin ในแอปพลิเคชัน Python ของคุณ โปรดดูที่การใช้ ClientLogin กับไลบรารีไคลเอ็นต์ Google Data API
ฟีดของเว็บไซต์
คุณสามารถใช้ฟีดของเว็บไซต์เพื่อแสดงรายการ Google Sites ที่ผู้ใช้เป็นเจ้าของหรือมีสิทธิ์ดู นอกจากนี้ยังใช้เพื่อแก้ไขชื่อเว็บไซต์ที่มีอยู่ได้ด้วย สุดท้าย สำหรับโดเมน G Suite ยังสามารถใช้เพื่อสร้างและ/หรือคัดลอก ทั่วทั้งเว็บไซต์
แสดงรายการเว็บไซต์
หากต้องการแสดงเว็บไซต์ที่ผู้ใช้มีสิทธิ์เข้าถึง ให้ใช้เมธอด GetSiteFeed()
ของไคลเอ็นต์ เมธอดจะมีตัวเลือก
uri
ที่คุณอาจใช้เพื่อระบุ URI ฟีดของเว็บไซต์สำรอง โดยค่าเริ่มต้น GetSiteFeed()
ใช้ชื่อเว็บไซต์และโดเมนที่ตั้งค่าไว้ในออบเจ็กต์ไคลเอ็นต์ โปรดดูที่ส่วนการเริ่มต้นใช้งานสำหรับ
ข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าเหล่านี้ในออบเจ็กต์ไคลเอ็นต์
ต่อไปนี้คือตัวอย่างการดึงรายการเว็บไซต์ของผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์
feed = client.GetSiteFeed() for entry in feed.entry: print '%s (%s)' % (entry.title.text, entry.site_name.text) if entry.summary.text: print 'description: ' + entry.summary.text if entry.FindSourceLink(): print 'this site was copied from site: ' + entry.FindSourceLink() print 'acl feed: %s\n' % entry.FindAclLink() print 'theme: ' + entry.theme.text
ตัวอย่างด้านบนจะพิมพ์ชื่อเว็บไซต์ ชื่อเว็บไซต์ ที่คัดลอกมา และ URI ของฟีด ACL
การสร้างเว็บไซต์ใหม่
หมายเหตุ: ฟีเจอร์นี้ใช้ได้กับโดเมน G Suite เท่านั้น
คุณจะจัดสรรเว็บไซต์ใหม่ได้โดยเรียกใช้เมธอด CreateSite()
ของไลบรารี
เช่นเดียวกับGetSiteFeed()
ตัวช่วย CreateSite()
ยังยอมรับ
อาร์กิวเมนต์ที่ไม่บังคับ uri
ซึ่งคุณสามารถใช้เพื่อระบุ URI ของฟีดไซต์สำรอง (ในกรณีที่มีการสร้าง
เว็บไซต์ภายใต้โดเมนอื่นที่ไม่ใช่โดเมนที่ตั้งไว้ในออบเจ็กต์ SitesClient
ของคุณ)
ต่อไปนี้คือตัวอย่างการสร้างเว็บไซต์ใหม่ที่มีธีมเป็น "แถบสเลท" และให้ ชื่อและคำอธิบาย (ไม่บังคับ)
client.domain = 'example2.com' # demonstrates creating a site under a different domain. entry = client.CreateSite('Title For My Site', description='Site to hold precious memories', theme='slate') print 'Site created! View it at: ' + entry.GetAlternateLink().href
คำขอข้างต้นจะสร้างเว็บไซต์ใหม่ภายใต้โดเมน G Suite example2.com
ดังนั้น URL ของเว็บไซต์จะเป็น https://sites.google.com/a/example2.com/title-for-my-site
หากสร้างเว็บไซต์สำเร็จ เซิร์ฟเวอร์จะตอบกลับด้วย gdata.sites.data.SiteEntry
ซึ่งมีองค์ประกอบที่เซิร์ฟเวอร์เพิ่มเข้ามา ได้แก่ ลิงก์ไปยังเว็บไซต์ ลิงก์ไปยังฟีด ACL ของเว็บไซต์
ชื่อเว็บไซต์ ชื่อเรื่อง ข้อมูลสรุป และอื่นๆ
การคัดลอกเว็บไซต์
หมายเหตุ: ฟีเจอร์นี้ใช้ได้กับโดเมน G Suite เท่านั้น
นอกจากนี้ คุณยังใช้ CreateSite()
เพื่อคัดลอกเว็บไซต์ที่มีอยู่ได้ด้วย โดยส่งในอาร์กิวเมนต์คีย์เวิร์ด source_site
เว็บไซต์ที่คัดลอกจะมีลิงก์นี้ซึ่งเข้าถึงได้ผ่าน entry.FindSourceLink()
นี่คือตัวอย่างของการทำซ้ำเว็บไซต์
ที่สร้างขึ้นในส่วนการสร้างเว็บไซต์ใหม่
copied_site = client.CreateSite('Copy of Title For My Site', description='My Copy', source_site=entry.FindSourceLink()) print 'Site copied! View it at: ' + copied_site.GetAlternateLink().href
ประเด็นสำคัญ
- คัดลอกได้เฉพาะไซต์และเทมเพลตของไซต์ที่ผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์เป็นเจ้าของเท่านั้น
- นอกจากนี้ ยังสามารถคัดลอกเทมเพลตของไซต์ได้อีกด้วย เว็บไซต์เป็นเทมเพลตหากช่อง "เผยแพร่เว็บไซต์นี้เป็นเทมเพลต" ในหน้าการตั้งค่า Google Sites แล้ว
- คุณสามารถคัดลอกเว็บไซต์จากโดเมนอื่น กำลังรอให้คุณเป็นเจ้าของบนเว็บไซต์ต้นทาง
การอัปเดตข้อมูลเมตาของเว็บไซต์
หากต้องการอัปเดตชื่อหรือสรุปของเว็บไซต์ คุณจะต้องมี SiteEntry
ที่มีเว็บไซต์ดังกล่าว ช่วงเวลานี้
ตัวอย่างเช่น ใช้วิธีการ GetEntry()
เพื่อดึงข้อมูล SiteEntry
ก่อน จากนั้นจึงเปลี่ยนชื่อ คำอธิบาย และแท็กหมวดหมู่
uri = 'https://sites.google.com/feeds/site/example2.com/title-for-my-site' site_entry = client.GetEntry(uri, desired_class=gdata.sites.data.SiteEntry) site_entry.title.text = 'Better Title' site_entry.summary.text = 'Better Description' category_name = 'My Category' category = atom.data.Category( scheme=gdata.sites.data.TAG_KIND_TERM, term=category_name) site_entry.category.append(category) updated_site_entry = client.Update(site_entry) # To force the update, even if you do not have the latest changes to the entry: # updated_site_entry = client.Update(site_entry, force=True)
กำลังดึงข้อมูลฟีดกิจกรรม
หมายเหตุ: คุณต้องเป็นผู้ทำงานร่วมกันหรือเจ้าของเว็บไซต์จึงจะเข้าถึงฟีดนี้ได้ ไคลเอ็นต์ของคุณต้องตรวจสอบสิทธิ์โดยใช้โทเค็น AuthSub, OAuth หรือ ClientLogin โปรดดูการตรวจสอบสิทธิ์กับบริการ Sites
คุณสามารถดึงข้อมูลกิจกรรมล่าสุด (การเปลี่ยนแปลง) ของเว็บไซต์โดยการดึงข้อมูลฟีดกิจกรรม
เมธอด GetActivityFeed()
ของ Lib ให้สิทธิ์เข้าถึงฟีดนี้:
print "Fetching activity feed of '%s'...\n" % client.site feed = client.GetActivityFeed() for entry in feed.entry: print '%s [%s on %s]' % (entry.title.text, entry.Kind(), entry.updated.text)
การเรียกใช้ GetActivityFeed()
จะแสดงผลออบเจ็กต์ gdata.sites.data.ActivityFeed
ที่มีรายการของ
gdata.sites.data.ActivityEntry
แต่ละรายการกิจกรรมจะมีข้อมูล
การเปลี่ยนแปลงที่เกิดขึ้นในเว็บไซต์
กำลังดึงข้อมูลประวัติการแก้ไข
หมายเหตุ: คุณต้องเป็นผู้ทำงานร่วมกันหรือเจ้าของเว็บไซต์จึงจะเข้าถึงฟีดนี้ได้ ไคลเอ็นต์ของคุณต้องตรวจสอบสิทธิ์โดยใช้โทเค็น AuthSub, OAuth หรือ ClientLogin โปรดดูการตรวจสอบสิทธิ์กับบริการ Sites
ฟีดการแก้ไขจะให้ข้อมูลเกี่ยวกับประวัติการแก้ไขสำหรับรายการเนื้อหาใดๆ GetRevisionFeed()
สามารถใช้เมธอดเพื่อเรียกการแก้ไขสำหรับรายการเนื้อหาที่ระบุ เมธอดนี้มี uri
ที่ไม่บังคับ
พารามิเตอร์ที่ยอมรับ gdata.sites.data.ContentEntry
, URI แบบเต็มของรายการเนื้อหา หรือรหัสรายการเนื้อหา
ตัวอย่างนี้จะค้นหาฟีดเนื้อหา และดึงฟีดการแก้ไขสำหรับรายการเนื้อหาแรก
print "Fetching content feed of '%s'...\n" % client.site content_feed = client.GetContentFeed() content_entry = content_feed.entry[0] print "Fetching revision feed of '%s'...\n" % content_entry.title.text revision_feed = client.GetRevisionFeed(content_entry) for entry in revision_feed.entry: print entry.title.text print ' new version on:\t%s' % entry.updated.text print ' view changes:\t%s' % entry.GetAlternateLink().href print ' current version:\t%s...\n' % str(entry.content.html)[0:100]
การเรียกใช้ GetRevisionFeed()
จะแสดงผลออบเจ็กต์ gdata.sites.data.RevisionFeed
ที่มีรายการของ
gdata.sites.data.RevisionEntry
แต่ละรายการแก้ไขจะมีข้อมูล เช่น เนื้อหา
ที่การแก้ไขนั้น หมายเลขเวอร์ชัน และเมื่อมีการสร้างเวอร์ชันใหม่
ฟีดเนื้อหา
กำลังเรียกฟีดเนื้อหา
หมายเหตุ: ฟีดเนื้อหาอาจต้องมีการตรวจสอบสิทธิ์หรือไม่ก็ได้ ขึ้นอยู่กับสิทธิ์การแชร์ของเว็บไซต์ หากไซต์ไม่เป็นสาธารณะ ไคลเอ็นต์ของคุณต้องตรวจสอบสิทธิ์โดยใช้โทเค็น AuthSub, OAuth หรือ ClientLogin โปรดดู การตรวจสอบสิทธิ์กับบริการ Sites
ฟีดเนื้อหาจะแสดงเนื้อหาล่าสุดของเว็บไซต์ สามารถเข้าถึงได้โดยการเรียกใช้ lib
GetContentFeed()
ซึ่งใช้พารามิเตอร์สตริง uri
ที่ไม่บังคับในการส่ง
ข้อความค้นหาที่ปรับแต่งสำหรับคุณ
ต่อไปนี้คือตัวอย่างของการดึงข้อมูลฟีดเนื้อหาทั้งหมดและพิมพ์องค์ประกอบที่น่าสนใจทั้งหมด
print "Fetching content feed of '%s'...\n" % client.site feed = client.GetContentFeed() for entry in feed.entry: print '%s [%s]' % (entry.title.text, entry.Kind()) # Common properties of all entry kinds. print ' content entry id: ' + entry.GetNodeId() print ' revision:\t%s' % entry.revision.text print ' updated:\t%s' % entry.updated.text if entry.page_name: print ' page name:\t%s' % entry.page_name.text if entry.content: print ' content\t%s...' % str(entry.content.html)[0:100] # Subpages/items will have a parent link. parent_link = entry.FindParentLink() if parent_link: print ' parent link:\t%s' % parent_link # The alternate link is the URL pointing to Google Sites. if entry.GetAlternateLink(): print ' view in Sites:\t%s' % entry.GetAlternateLink().href # If this entry is a filecabinet, announcementpage, etc., it will have a feed of children. if entry.feed_link: print ' feed of items:\t%s' % entry.feed_link.href print
เคล็ดลับ: entry.Kind()
สามารถใช้เพื่อกำหนดประเภทของรายการได้
ออบเจ็กต์ feed
ที่ได้คือ gdata.sites.data.ContentFeed
ที่มีลิสต์
จาก gdata.sites.data.ContentEntry
แต่ละรายการจะแสดงหน้าเว็บ/รายการที่แตกต่างกันภายใน
ไซต์ของผู้ใช้ และมีองค์ประกอบเฉพาะสำหรับประเภทของการเข้าชม ดูแอปพลิเคชันตัวอย่างเพื่อให้มีแนวคิดที่ดีขึ้น
พร็อพเพอร์ตี้บางรายการที่พร้อมใช้งานในแต่ละรายการ
ตัวอย่างการค้นหาฟีดเนื้อหา
คุณสามารถค้นหาฟีดเนื้อหาโดยใช้พารามิเตอร์การค้นหาของ Google Data API มาตรฐานบางรายการ และข้อมูลเฉพาะสำหรับ Sites API แบบคลาสสิก สำหรับข้อมูลโดยละเอียดเพิ่มเติมและรายการพารามิเตอร์ที่รองรับทั้งหมด โปรดดู คู่มืออ้างอิง
หมายเหตุ: ตัวอย่างในส่วนนี้ใช้ประโยชน์จากเมธอดช่วย gdata.sites.client.MakeContentFeedUri()
เพื่อสร้าง URI พื้นฐานของฟีดเนื้อหา
กำลังดึงข้อมูลประเภทรายการที่เจาะจง
หากต้องการดึงข้อมูลประเภทรายการเฉพาะ ให้ใช้พารามิเตอร์ kind
สำหรับตัวอย่างนี้ ข้อมูลโค้ดนี้จะแสดงเฉพาะ attachment
รายการ
kind = 'webpage' print 'Fetching only %s entries' % kind uri = '%s?kind=%s' % (client.MakeContentFeedUri(), kind) feed = client.GetContentFeed(uri=uri)
หากต้องการแสดงผลมากกว่า 1 ประเภท ให้คั่น kind
แต่ละรายการด้วยคอมมา ตัวอย่างเช่น ข้อมูลโค้ดนี้แสดง filecabinet
และ
listpage
รายการ:
kind = ','.join(['filecabinet', 'listpage']) print 'Fetching only %s entries' % kind uri = '%s?kind=%s' % (client.MakeContentFeedUri(), kind) feed = client.GetContentFeed(uri=uri)
การเรียกหน้าเว็บตามเส้นทาง
หากคุณทราบเส้นทางที่เกี่ยวข้องของหน้าเว็บภายในเว็บไซต์จาก Google Sites คุณสามารถใช้พารามิเตอร์ path
เพื่อดึงข้อมูลหน้าเว็บนั้นๆ ได้
ตัวอย่างนี้จะแสดงผลหน้าเว็บซึ่งอยู่ที่
http://sites.google.com/domainName/siteName/path/to/the/page
:
path = '/path/to/the/page' print 'Fetching page by its path: ' + path uri = '%s?path=%s' % (client.MakeContentFeedUri(), path) feed = client.GetContentFeed(uri=uri)
กำลังเรียกดูรายการทั้งหมดในหน้าหลัก
หากคุณทราบรหัสรายการเนื้อหาของหน้าเว็บ (เช่น "1234567890" ในตัวอย่างด้านล่าง) คุณสามารถใช้พารามิเตอร์ parent
เพื่อดึงข้อมูลรายการย่อยทั้งหมด (หากมี):
parent = '1234567890' print 'Fetching all children of parent entry: ' + parent uri = '%s?parent=%s' % (client.MakeContentFeedUri(), parent) feed = client.GetContentFeed(uri=uri)
สำหรับพารามิเตอร์เพิ่มเติม โปรดดูคู่มืออ้างอิง
การสร้างเนื้อหา
หมายเหตุ: ก่อนสร้างเนื้อหาสำหรับเว็บไซต์ โปรดตรวจสอบว่าคุณได้ตั้งค่าเว็บไซต์ในไคลเอ็นต์แล้วclient.site = "siteName"
คุณสร้างเนื้อหาใหม่ (หน้าเว็บ หน้ารายการ ตู้ไฟล์ หน้าประกาศ ฯลฯ) ได้โดยใช้ CreatePage()
อาร์กิวเมนต์แรกของเมธอดนี้ควรเป็นประเภทของหน้าเว็บที่จะสร้าง ตามด้วยชื่อ และเนื้อหา HTML ของหน้า
สำหรับรายการประเภทโหนดที่สนับสนุน โปรดดูพารามิเตอร์ kind
ในคู่มืออ้างอิง
การสร้างรายการ / หน้าใหม่
ตัวอย่างนี้สร้าง webpage
ใหม่ภายใต้ระดับบนสุด รวมทั้ง XHTML บางส่วนสำหรับเนื้อหาของหน้า
และกำหนดชื่อส่วนหัวเป็น "ชื่อหน้าเว็บใหม่":
entry = client.CreatePage('webpage', 'New WebPage Title', html='<b>HTML content</b>') print 'Created. View it at: %s' % entry.GetAlternateLink().href
หากคำขอประสบความสำเร็จ entry
จะมีสำเนาของรายการที่สร้างขึ้นบนเซิร์ฟเวอร์เป็น gdata.sites.gdata.ContentEntry
หากต้องการสร้างประเภทรายการที่ซับซ้อนมากขึ้นซึ่งมีการป้อนข้อมูลระหว่างการสร้าง (เช่น listpage
ที่มีส่วนหัวคอลัมน์) คุณจะต้องสร้าง
gdata.sites.data.ContentEntry
ด้วยตนเอง ให้ป้อนคุณสมบัติที่สนใจ แล้วเรียกใช้ client.Post()
การสร้างรายการ/หน้าเว็บภายใต้เส้นทาง URL ที่กำหนดเอง
โดยค่าเริ่มต้น ตัวอย่างก่อนหน้านี้จะสร้างขึ้นภายใต้ URL
http://sites.google.com/domainName/siteName/new-webpage-title
และ
มีส่วนหัวหน้าเป็น "ชื่อหน้าเว็บใหม่" กล่าวคือ ชื่อจะได้รับการแปลงเป็นรูปแบบ new-webpage-title
สำหรับ URL
หากต้องการปรับแต่งเส้นทาง URL ของหน้าเว็บ ให้ตั้งค่าพร็อพเพอร์ตี้ page_name
ในรายการเนื้อหา ผู้ช่วย CreatePage()
ระบุค่านี้เป็นอาร์กิวเมนต์คีย์เวิร์ดที่ไม่บังคับ
ตัวอย่างนี้สร้างหน้า filecabinet
ใหม่ที่มีส่วนหัวเป็น "File Storage" แต่สร้างหน้านั้น
ใต้ URL http://sites.google.com/domainName/siteName/files
(แทน http://sites.google.com/domainName/siteName/file-storage
)
โดยระบุพร็อพเพอร์ตี้ page_name
entry = client.CreatePage('filecabinet', 'File Storage', html='<b>HTML content</b>', page_name='files') print 'Created. View it at: ' + entry.GetAlternateLink().href
เซิร์ฟเวอร์ใช้กฎตามลำดับความสำคัญต่อไปนี้ในการตั้งชื่อเส้นทาง URL ของหน้าเว็บ
page_name
หากมี ต้องเป็นไปตามa-z, A-Z, 0-9, -, _
title
ต้องไม่เป็นค่าว่างหากไม่มีชื่อหน้า การปรับให้เป็นมาตรฐานคือการตัด + ยุบช่องว่างเป็น "-" และ นำอักขระที่ไม่ตรงกับa-z, A-Z, 0-9, -, _
ออก
การสร้างหน้าย่อย
หากต้องการสร้างหน้าย่อย (หน้าย่อย) ในหน้าหลัก ให้ใช้อาร์กิวเมนต์คีย์เวิร์ด parent
ของ CreatePage()
parent
อาจเป็น gdata.sites.gdata.ContentEntry
หรือสตริงที่แสดงถึง
รหัสแบบเต็มของรายการเนื้อหา
ตัวอย่างนี้ค้นหาฟีดเนื้อหาสำหรับ announcementpage
และสร้าง announcement
ใหม่ใต้รายการแรกที่พบ
uri = '%s?kind=%s' % (client.MakeContentFeedUri(), 'announcementpage') feed = client.GetContentFeed(uri=uri) entry = client.CreatePage('announcement', 'Party!!', html='My place, this weekend', parent=feed.entry[0]) print 'Posted!'
กำลังอัปโหลดไฟล์
API รองรับการอัปโหลดไฟล์แนบไปยังหน้าจัดการไฟล์หรือหน้าหลักเช่นเดียวกับใน Google Sites ต้องอัปโหลดไฟล์แนบ
ไว้ในหน้าหลัก ดังนั้นคุณจะต้องตั้งค่าลิงก์หลักใน ContentEntry
ที่ต้องการอัปโหลด ดูการสร้างหน้าเว็บย่อยสำหรับข้อมูลเพิ่มเติม
เมธอด UploadAttachment()
ของไลบรารีของไคลเอ็นต์จะมีอินเทอร์เฟซสำหรับการอัปโหลดไฟล์แนบ
กำลังอัปโหลดไฟล์
ตัวอย่างนี้อัปโหลดไฟล์ PDF ไปยัง filecabinet
ไฟล์แรกที่พบในฟีดเนื้อหาของผู้ใช้
ระบบสร้างไฟล์แนบที่มีชื่อว่า "คู่มือพนักงานใหม่" และคำอธิบาย (ไม่บังคับ) "แพ็กเก็ต HR"
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'filecabinet') feed = client.GetContentFeed(uri=uri) attachment = client.UploadAttachment('/path/to/file.pdf', feed.entry[0], content_type='application/pdf', title='New Employee Handbook', description='HR Packet') print 'Uploaded. View it at: %s' % attachment.GetAlternateLink().href
หากอัปโหลดสำเร็จ attachment
จะมีสำเนาของไฟล์แนบที่สร้างไว้ในเซิร์ฟเวอร์
การอัปโหลดไฟล์แนบไปยังโฟลเดอร์
โฟลเดอร์รองรับที่เก็บไฟล์ใน Google Sites UploadAttachment()
ระบุคีย์เวิร์ดเพิ่มเติม
folder_name
ที่คุณสามารถใช้เพื่ออัปโหลดไฟล์แนบไปยังโฟลเดอร์ filecabinet
เพียงระบุชื่อโฟลเดอร์ดังนี้
import gdata.data ms = gdata.data.MediaSource(file_path='/path/to/file.pdf', content_type='application/pdf') attachment = client.UploadAttachment(ms, feed.entry[0], title='New Employee Handbook', description='HR Packet', folder_name='My Folder')
โปรดสังเกตว่าตัวอย่างนี้ส่งออบเจ็กต์ gdata.data.MediaSource
ไปยัง UploadAttachment()
แทน
ของเส้นทางไฟล์ และจะไม่ผ่านประเภทเนื้อหา แต่จะระบุประเภทเนื้อหาในออบเจ็กต์ MediaSource แทน
ไฟล์แนบจากเว็บ
ไฟล์แนบบนเว็บเป็นไฟล์แนบชนิดพิเศษ โดยพื้นฐานแล้ว เป็นลิงก์ที่เชื่อมโยงไปยังไฟล์อื่นๆ บนเว็บ
ที่คุณสามารถเพิ่มลงใน filecabinet
ข้อมูล ฟีเจอร์นี้คล้ายกับ 'Add file by URL' [เพิ่มไฟล์ด้วย URL] ใน UI ของ Google Sites
หมายเหตุ: สามารถสร้างไฟล์แนบบนเว็บได้โดยใช้ filecabinet
เท่านั้น แต่จะอัปโหลดไปยังหน้าเว็บประเภทอื่นๆ ไม่ได้
ตัวอย่างนี้สร้างไฟล์แนบบนเว็บภายใต้ filecabinet
แรกที่พบในฟีดเนื้อหาของผู้ใช้
ตั้งชื่อและคำอธิบาย (ไม่บังคับ) เป็น "GoogleLogo" และ "สีสวย" ตามลำดับ
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'filecabinet') feed = client.GetContentFeed(uri=uri) parent_entry = feed.entry[0] image_url = 'http://www.google.com/images/logo.gif' web_attachment = client.CreateWebAttachment(image_url, 'image/gif', 'GoogleLogo', parent_entry, description='nice colors') print 'Created!'
การเรียกใช้จะสร้างลิงก์ที่นำไปยังรูปภาพที่ 'http://www.google.com/images/logo.gif' ในfilecabinet
การอัปเดตเนื้อหา
การอัปเดตข้อมูลเมตาของหน้าเว็บและ/หรือเนื้อหา HTML
ข้อมูลเมตา (ชื่อ, pageName ฯลฯ) และเนื้อหาหน้าเว็บทุกประเภทสามารถแก้ไขได้โดย
โดยใช้เมธอด Update()
ของไคลเอ็นต์
ด้านล่างนี้คือตัวอย่างการอัปเดต listpage
ด้วยการเปลี่ยนแปลงต่อไปนี้
- แก้ไขชื่อเป็น "รายการที่อัปเดตแล้ว"
- เนื้อหา HTML ของหน้าเว็บได้รับการอัปเดตเป็น "เนื้อหา HTML ที่อัปเดตแล้ว"
- ส่วนหัวของคอลัมน์แรกของรายการเปลี่ยนเป็น "เจ้าของ"
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'listpage') feed = client.GetContentFeed(uri=uri) old_entry = feed.entry[0] # Update the listpage's title, html content, and first column's name. old_entry.title.text = 'Updated Title' old_entry.content.html = 'Updated HTML Content' old_entry.data.column[0].name = 'Owner' # You can also change the page's webspace page name on an update. # old_entry.page_name = 'new-page-path' updated_entry = client.Update(old_entry) print 'List page updated!'
การแทนที่เนื้อหาและข้อมูลเมตาของไฟล์แนบ
คุณจะแทนที่เนื้อหาของไฟล์แนบได้โดยการสร้างออบเจ็กต์ MediaSource
ใหม่
ด้วยเนื้อหาไฟล์ใหม่และการเรียกใช้เมธอด Update()
ของไคลเอ็นต์แล้ว ไฟล์แนบ
คุณสามารถอัปเดตข้อมูลเมตา (เช่น ชื่อและคำอธิบาย) หรือระบุเพียงข้อมูลเมตา
ตัวอย่างนี้แสดงการอัปเดตเนื้อหาและข้อมูลเมตาของไฟล์พร้อมกัน
import gdata.data # Load the replacement content in a MediaSource. Also change the attachment's title and description. ms = gdata.data.MediaSource(file_path='/path/to/replacementContent.doc', content_type='application/msword') existing_attachment.title.text = 'Updated Document Title' existing_attachment.summary.text = 'version 2.0' updated_attachment = client.Update(existing_attachment, media_source=ms) print "Attachment '%s' changed to '%s'" % (existing_attachment.title.text, updated_attachment.title.text)
การลบเนื้อหา
หากต้องการนำหน้าเว็บหรือรายการออกจากเว็บไซต์จาก Google Sites ให้ดึงข้อมูลรายการเนื้อหาก่อน แล้วจึงเรียกใช้เมธอด Delete()
ของไคลเอ็นต์
client.Delete(content_entry)
คุณยังส่งผ่านเมธอด Delete()
ที่ลิงก์ edit
ของรายการเนื้อหาและ/หรือบังคับการลบได้ดังนี้
# force=True sets the If-Match: * header instead of using the entry's ETag. client.Delete(content_entry.GetEditLink().href, force=True)
ดูข้อมูลเพิ่มเติมเกี่ยวกับ ETag ได้จากคู่มืออ้างอิงสำหรับ Google Data API
กำลังดาวน์โหลดไฟล์แนบ
แต่ละรายการของ attachment
จะมีลิงก์เนื้อหา src
ซึ่งใช้เพื่อดาวน์โหลดเนื้อหาของไฟล์ได้
ไคลเอ็นต์ Sites มีวิธีช่วยเหลือในการเข้าถึงและดาวน์โหลดไฟล์จากลิงก์นี้: DownloadAttachment()
โดยจะยอมรับ gdata.sites.data.ContentEntry
หรือ URI การดาวน์โหลดสำหรับอาร์กิวเมนต์แรกและเส้นทางไฟล์ที่บันทึกไฟล์แนบ
เป็นรายการที่ 2
ตัวอย่างนี้ดึงรายการไฟล์แนบบางอย่าง (โดยค้นหาลิงก์ self
) และดาวน์โหลดไฟล์ไปยังเส้นทางที่ระบุ
uri = 'https://sites.google.com/feeds/content/site/siteName/1234567890' attachment = client.GetEntry(uri, desired_class=gdata.sites.data.ContentEntry) print "Downloading '%s', a %s file" % (attachment.title.text, attachment.content.type) client.DownloadAttachment(attachment, '/path/to/save/test.pdf') print 'Downloaded!'
การระบุนามสกุลไฟล์ที่เหมาะกับประเภทเนื้อหาของไฟล์แนบนั้นจะขึ้นอยู่กับนักพัฒนาแอป ประเภทเนื้อหา
อยู่ใน entry.content.type
ในบางกรณี คุณอาจไม่สามารถดาวน์โหลดไฟล์ลงในดิสก์ได้ (เช่น หากแอปกำลังทำงานใน Google App Engine)
ในสถานการณ์เช่นนี้ ให้ใช้ _GetFileContent()
เพื่อดึงข้อมูลเนื้อหาของไฟล์และจัดเก็บไว้ในหน่วยความจำ
ตัวอย่างนี้ดาวน์โหลดเป็นไฟล์แนบในหน่วยความจำ
try: file_contents = client._GetFileContent(attachment.content.src) # TODO: Do something with the file contents except gdata.client.RequestError, e: raise e
ฟีด ACL
ภาพรวมของสิทธิ์การแชร์ (ACL)
รายการ ACL แต่ละรายการในฟีด ACL แสดงบทบาทการเข้าถึงของเอนทิตีหนึ่งๆ ซึ่งอาจเป็นผู้ใช้ กลุ่มผู้ใช้ โดเมน หรือการเข้าถึงเริ่มต้น (ซึ่งเป็นเว็บไซต์สาธารณะ) ระบบจะแสดงรายการสำหรับบุคคลที่มีสิทธิ์การเข้าถึงอย่างชัดแจ้งเท่านั้น โดยจะแสดง 1 รายการ สำหรับแต่ละอีเมลใน "ผู้ที่มีสิทธิ์เข้าถึง" ในหน้าจอการแชร์ของ UI ของ Google Sites ดังนั้นระบบจะไม่แสดงผู้ดูแลระบบโดเมน แม้ว่าพวกเขาจะมีสิทธิ์เข้าถึงเว็บไซต์โดยปริยายก็ตาม
บทบาท
องค์ประกอบบทบาทแสดงถึงระดับการเข้าถึงที่เอนทิตีหนึ่งๆ มีได้ ค่าที่เป็นไปได้ขององค์ประกอบ gAcl:role
มีอยู่ 4 ค่า ได้แก่
- reader — ผู้มีสิทธิ์อ่าน (เทียบเท่ากับสิทธิ์การเข้าถึงระดับอ่านอย่างเดียว)
- writer — ผู้ทำงานร่วมกัน (เทียบเท่ากับสิทธิ์การอ่าน/เขียน)
- owner — โดยทั่วไปคือผู้ดูแลระบบไซต์ (เทียบเท่ากับสิทธิ์การอ่าน/เขียน)
ขอบเขต
องค์ประกอบขอบเขตแสดงถึงเอนทิตีที่มีระดับการเข้าถึงนี้ องค์ประกอบ gAcl:scope
ที่เป็นไปได้มี 4 ประเภทดังนี้
- user — ค่าที่อยู่อีเมล เช่น "user@gmail.com"
- group — ที่อยู่อีเมลของกลุ่ม Google เช่น "group@domain.com"
- domain — ชื่อโดเมน G Suite เช่น "domain.com"
- default — มีขอบเขตประเภท "ค่าเริ่มต้น" ที่เป็นไปได้เพียง 1 ขอบเขตซึ่งไม่มีค่า
(เช่น
<gAcl:scope type="default">
) ขอบเขตเฉพาะนี้ควบคุมการเข้าถึงที่ผู้ใช้มีโดยค่าเริ่มต้น บนเว็บไซต์สาธารณะ
หมายเหตุ: โดเมนมีค่า gAcl:role
ไม่ได้
ตั้งค่าเป็น "เจ้าของ" คุณก็เป็น
ผู้อ่านหรือผู้เขียนได้เท่านั้น
กำลังเรียกฟีด ACL
คุณใช้ฟีด ACL เพื่อควบคุมสิทธิ์การแชร์ของเว็บไซต์ได้ และสามารถดึงข้อมูลโดยใช้เมธอด GetAclFeed()
ตัวอย่างต่อไปนี้จะดึงข้อมูลฟีด ACL สำหรับเว็บไซต์ที่ตั้งค่าไว้ในออบเจ็กต์ SitesClient
ในปัจจุบัน
และพิมพ์รายการสิทธิ์ต่อไปนี้
print "Fetching acl permissions of site '%s'...\n" % client.site feed = client.GetAclFeed() for entry in feed.entry: print '%s (%s) - %s' % (entry.scope.value, entry.scope.type, entry.role.value)
หลังจากค้นหาสำเร็จแล้ว feed
จะเป็นออบเจ็กต์ gdata.sites.data.AclFeed
ที่มี
รายชื่อของ gdata.sites.data.AclEntry
หากคุณกำลังทำงานกับรายการใน SiteFeed SiteEntry
แต่ละรายการจะมีลิงก์ไปยังฟีด ACL
ตัวอย่างเช่น ข้อมูลโค้ดนี้จะดึงข้อมูลเว็บไซต์แรกในฟีดเว็บไซต์ของผู้ใช้และค้นหาฟีด ACL ของ URL
feed = client.GetSiteFeed() site_entry = feed.entry[0] print "Fetching acl permissions of site '%s'...\n" % site_entry.site_name.text feed = client.GetAclFeed(uri=site_entry.FindAclLink())
การแชร์เว็บไซต์
หมายเหตุ: ACL การแชร์บางรายการอาจเป็นไปได้เฉพาะเมื่อมีการกำหนดค่าโดเมน เพื่ออนุญาตสิทธิ์ดังกล่าว (เช่น มีการเปิดใช้การแชร์ภายนอกโดเมนสำหรับโดเมน G Suite เป็นต้น)
หากต้องการแชร์เว็บไซต์จาก Google Sites โดยใช้ API ให้สร้าง gdata.sites.gdata.AclEntry
ด้วย
gdata.acl.data.AclScope
และ gdata.acl.data.AclRole
โปรดดู
ส่วนภาพรวมฟีด ACL สำหรับ AclScope
ที่เป็นไปได้
และค่า AclRoles
ตัวอย่างนี้ให้สิทธิ์การอ่านบนไซต์แก่ผู้ใช้ "user@example.com":
import gdata.acl.data scope = gdata.acl.data.AclScope(value='user@example.com', type='user') role = gdata.acl.data.AclRole(value='reader') acl = gdata.sites.gdata.AclEntry(scope=scope, role=role) acl_entry = client.Post(acl, client.MakeAclFeedUri()) print "%s %s added as a %s" % (acl_entry.scope.type, acl_entry.scope.value, acl_entry.role.value)
การแชร์ระดับกลุ่มและโดเมน
เช่นเดียวกับการแชร์ไซต์กับผู้ใช้รายเดียว คุณสามารถแชร์ไซต์ระหว่าง
กลุ่ม Google หรือโดเมน G Suite ค่า scope
ที่จำเป็นแสดงอยู่ด้านล่าง
การแชร์ไปยังอีเมลของกลุ่ม:
scope = gdata.acl.data.AclScope(value='group_name@example.com', type='group')
แชร์กับทั้งโดเมน:
scope = gdata.acl.data.AclScope(value='example.com', type='domain')
การแชร์ในระดับโดเมนรองรับเฉพาะโดเมน G Suite และโดเมนที่โฮสต์เว็บไซต์เท่านั้น ตัวอย่างเช่น http://sites.google.com/a/domain1.com/siteA สามารถแชร์เว็บไซต์ทั้งไซต์กับ domain1.com ได้เท่านั้น ไม่สามารถใช้ domain2.com เว็บไซต์ที่ ไม่ได้โฮสต์อยู่บนโดเมน G Suite (เช่น http://sites.google.com/site/siteB) ไม่สามารถเชิญโดเมนได้
การแก้ไขสิทธิ์การแชร์
สำหรับสิทธิ์การแชร์ที่มีอยู่แล้วในเว็บไซต์ ให้ดึงข้อมูล AclEntry
ที่เป็นปัญหาก่อน และแก้ไขสิทธิ์
ตามต้องการ แล้วเรียกเมธอด Update()
ของไคลเอ็นต์เพื่อแก้ไข ACL ในเซิร์ฟเวอร์
ตัวอย่างนี้แก้ไข acl_entry
ก่อนหน้าของเราจากส่วนการแชร์เว็บไซต์
โดยการอัปเดต "user@example.com" เป็นนักเขียน (ผู้ทำงานร่วมกัน):
acl_entry.role.value = 'writer' updated_acl = client.Update(acl_entry) # To force the update, even if you do not have the latest changes to the entry: # updated_acl = client.Update(acl_entrys, force=True)
ดูข้อมูลเพิ่มเติมเกี่ยวกับ ETag ได้จากคู่มืออ้างอิงสำหรับ Google Data API
กำลังลบสิทธิ์การแชร์
หากต้องการนำสิทธิ์การแชร์ออก ให้เรียกข้อมูล AclEntry
ก่อน จากนั้นจึงเรียกใช้เมธอด Delete()
ของไคลเอ็นต์
client.Delete(acl_entry)
คุณยังส่งผ่านเมธอด Delete()
ที่ลิงก์ edit
ของรายการ ACL และ/หรือบังคับการลบได้ดังนี้
# force=True sets the If-Match: * header instead of using the entry's ETag. client.Delete(acl_entry.GetEditLink().href, force=True)
ดูข้อมูลเพิ่มเติมเกี่ยวกับ ETag ได้จากคู่มืออ้างอิงสำหรับ Google Data API
หัวข้อพิเศษ
การดึงข้อมูลฟีดหรือรายการอีกครั้ง
ถ้าต้องการเรียกฟีดหรือรายการที่เคยดึงข้อมูลมาก่อน คุณสามารถปรับปรุงประสิทธิภาพได้โดยบอก เซิร์ฟเวอร์จะส่งรายการหรือรายการได้ต่อเมื่อมีการเปลี่ยนแปลงนับตั้งแต่ที่คุณดึงข้อมูลมาครั้งล่าสุดเท่านั้น
หากต้องการดึงข้อมูลแบบมีเงื่อนไขประเภทนี้ ให้ส่งค่า ETag ไปยัง GetEntry()
ตัวอย่างเช่น หากคุณมีออบเจ็กต์ entry
อยู่แล้ว
import gdata.client try: entry = client.GetEntry(entry.GetSelfLink().href, desired_class=gdata.sites.data.ContentEntry, etag=entry.etag) except gdata.client.NotModified, error: print 'You have the latest copy of this entry' print error
หาก GetEntry()
ส่งข้อยกเว้น gdata.client.NotModified
รายการ
ETag จะจับคู่เวอร์ชันในเซิร์ฟเวอร์ ซึ่งหมายความว่าคุณมีสำเนาล่าสุด
แต่หากลูกค้า/ผู้ใช้รายอื่นทำการแก้ไข รายการใหม่จะส่งคืนใน entry
และจะไม่มีข้อยกเว้น
ดูข้อมูลเพิ่มเติมเกี่ยวกับ ETag ได้จากคู่มืออ้างอิงสำหรับ Google Data API