วิธีการ: โต้ตอบกับ Microsoft Graph และ SharePoint โดยใช้ตรรกะของเซิร์ฟเวอร์

คู่มือนี้จะแนะนําคุณเกี่ยวกับการตั้งค่าและการทดสอบตัวอย่างตรรกะของเซิร์ฟเวอร์ที่รวม Power Pages เข้ากับ Microsoft Graph และ SharePoint online

ขั้นตอนที่ 1: ดาวน์โหลดแพคเกจตัวอย่าง

  1. ไปที่คลังเก็บ https://github.com/microsoft/power-pages-samplesGitHub
  2. เลือกโค้ด>ดาวน์โหลด ZIP
  3. หลังจากดาวน์โหลด ให้แตกไฟล์ ZIP ไปยังโฟลเดอร์ภายในเครื่อง เช่น: C:\PowerPages\ServerLogic
  4. นําทางไปยังเส้นทางที่แยกออกมา: samples/server-logic/sharepoint-integration โฟลเดอร์นี้ประกอบด้วย event-registration.zip แพคเกจโซลูชัน ซึ่งรวมถึงทรัพยากรไซต์ Power Pages ที่คุณจะนําเข้าในขั้นตอนในภายหลัง

อีกวิธีหนึ่งคือใช้การลอกแบบ git ถ้าคุณต้องการ

git clone https://github.com/microsoft/power-pages-samples.git
cd power-pages-samples/samples/server-logic/sharepoint-integration

ขั้นตอนที่ 2: ข้อกําหนดเบื้องต้น

ก่อนที่คุณจะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:

  • เข้าถึง Microsoft Entra ID (Azure AD) ที่มีสิทธิ์ในการลงทะเบียนแอป
  • เข้าถึง ไซต์ SharePoint Online (ตัวอย่างเช่น https://contoso.sharepoint.com/sites/EventSite)

ขั้นตอนที่ 3: สร้างและกําหนดค่าแอปพลิเคชัน Entra ID

คุณต้องลงทะเบียนแอปเพื่ออนุญาตให้มีรหัสตรรกะของเซิร์ฟเวอร์ในการรับรองความถูกต้องกับ Microsoft Graph

สร้างการลงทะเบียนแอป

  1. ไปที่ พอร์ทัล Azure และเลือก การลงทะเบียนแอป
  2. เลือก + การลงทะเบียนใหม่
  3. ใส่ชื่อ (ตัวอย่างเช่น PowerPages-Graph-Integration)
  4. เลือกบัญชีในไดเรกทอรีองค์กรนี้เท่านั้น

    Note

    คุณไม่จําเป็นต้องใส่ URI เปลี่ยนเส้นทางสําหรับตัวอย่างนี้

  5. เลือก ลงทะเบียน

กําหนดค่าสิทธิ์ API

  1. ในแอปใหม่ ไปที่สิทธิ์> APIเพิ่มสิทธิ์
  2. เลือกสิทธิ์แอปพลิเคชัน>
  3. เพิ่มสิทธิ์ต่อไปนี้:
    • Sites.ReadWrite.All (สําหรับการดําเนินการไฟล์ SharePoint)
    • Mail.Send (ไม่บังคับ – จําเป็นถ้าคุณวางแผนที่จะเปิดใช้งานส่วนอีเมล)
  4. เลือก ให้ความยินยอมของผู้ดูแลระบบ สําหรับผู้เช่าของคุณ

สร้างข้อมูลลับไคลเอ็นต์

  1. ไปที่ ใบรับรอง & ข้อมูลลับข้อมูลลับของไคลเอ็นต์
  2. เลือก + ข้อมูลลับไคลเอ็นต์ใหม่
  3. ป้อนคําอธิบายและเลือกระยะเวลาหมดอายุ (ตัวอย่างเช่น หกเดือน)
  4. เลือก เพิ่ม และ คัดลอกค่าที่สร้างขึ้น ทันที ซึ่งเป็น CLIENT_SECRET ของคุณ

รวบรวมค่าที่จําเป็น

จากแอป Azure ของคุณ:

  • ไคลเอ็นต์ ID> CLIENT_ID
  • ID> ผู้เช่า TENANT_ID
  • ข้อมูลลับ> ไคลเอ็นต์ CLIENT_SECRET

ขั้นตอนที่ 4: ระบุไซต์และโฟลเดอร์ SharePoint ของคุณ

สคริปต์อัปโหลดตั๋วเหตุการณ์ที่สร้างขึ้นไปยังไซต์ SharePoint

  1. ระบุชื่อ โฮสต์ SharePoint และ เส้นทางไซต์ของคุณ: ตัวอย่างเช่น: HOSTNAME = contoso.sharepoint.com SITE_PATH = /sites/EventSite
  2. ตรวจสอบให้แน่ใจว่ามีไลบรารีเอกสารชื่อ เอกสาร อยู่ (ค่าเริ่มต้น)

ขั้นตอนที่ 5: ปรับใช้แพคเกจ

  1. สร้างไซต์ใหม่โดยการนําเข้าไซต์ที่ดาวน์โหลดล่าสุดจาก GitHub เมื่อต้องการเรียนรู้วิธีการนําเข้าไซต์ ให้ดู power-pages-solutions

  2. ในระหว่างการอัปเกรดไซต์ ให้อัปเดตค่าสําหรับตัวแปรสภาพแวดล้อม อัปเดตค่าต่อไปนี้ที่คุณรวบรวมไว้ในขั้นตอนก่อนหน้านี้:

    • รหัสไคลเอ็นต์
    • รหัสผู้เช่า
    • ข้อมูลลับไคลเอ็นต์ (เก็บค่านี้ไว้ใน Key Vault และใช้ในตัวแปรสภาพแวดล้อม สําหรับการทดสอบ คุณสามารถเก็บไว้ในตัวแปรสภาพแวดล้อมได้โดยตรง)
    • ชื่อโฮสต์
    • SITE_PATH

การไฮไลต์สคริปต์: ส่วนการกําหนดค่า

const CLIENT_ID = Server.SiteSetting.Get("CLIENT_ID");
const CLIENT_SECRET = Server.SiteSetting.Get("CLIENT_SECRET");;
const TENANT_ID = Server.SiteSetting.Get("TENANT_ID");

const HOSTNAME = Server.SiteSetting.Get("HOSTNAME"); 
const SITE_PATH = Server.SiteSetting.Get("SITE_PATH"); 

สิ่งเหล่านี้จะถูกโหลดอย่างปลอดภัยจากการตั้งค่าไซต์ Power Pages (ตัวแปรสภาพแวดล้อม)

ขั้นตอนที่ 6: ทดสอบการรวม SharePoint

สคริปต์ประมวลผล การส่งฟอร์มการลงทะเบียนเหตุการณ์ ได้รับโทเค็นการเข้าถึง Microsoft Graph สร้าง ตั๋ว HTML อัปโหลดไปยัง SharePoint และสร้างระเบียนใน Dataverse

การเน้นสคริปต์: การเรียกใช้ Microsoft Graph สําหรับโทเค็นการเข้าถึง

async function getAccessToken() {
   const body = {
      "client_id": CLIENT_ID,
      "client_secret": CLIENT_SECRET,
      "scope": "https://graph.microsoft.com/.default",
      "grant_type": "client_credentials"
   };
   const tokenResp = await Server.Connector.HttpClient.PostAsync(
      `https://login.microsoftonline.com/${TENANT_ID}/oauth2/v2.0/token`,
      JSON.stringify(body),
      { "Content-Type": "application/x-www-form-urlencoded" },
      "application/x-www-form-urlencoded"
   );
   const tokenJson = JSON.parse(JSON.parse(tokenResp).Body);
   return tokenJson.access_token;
}

การไฮไลต์สคริปต์: การอัปโหลดตั๋วไปยัง SharePoint

const siteResp = await Server.Connector.HttpClient.GetAsync(
  `https://graph.microsoft.com/v1.0/sites/${HOSTNAME}:${SITE_PATH}`,
  { Authorization: `Bearer ${accessToken}` }
);
const siteId = JSON.parse(JSON.parse(siteResp).Body).id;

const driveResp = await Server.Connector.HttpClient.GetAsync(
  `https://graph.microsoft.com/v1.0/sites/${siteId}/drive`,
  { Authorization: `Bearer ${accessToken}` }
);
const driveId = JSON.parse(JSON.parse(driveResp).Body).id;

const uploadUrl = `https://graph.microsoft.com/v1.0/drives/${driveId}/root:/Tickets/${fileName}:/content`;

await Server.Connector.HttpClient.PutAsync(
  uploadUrl,
  htmlTicket,
  { Authorization: `Bearer ${accessToken}`, "Content-Type": "text/html" },
  "text/html"
);

หลังจากการเรียกใช้สําเร็จ:

  1. ระเบียนใหม่ปรากฏใน Dataverse ภายใต้ crd69_eventregistrations
  2. ไฟล์ตั๋ว HTML ถูกอัปโหลดไปยังโฟลเดอร์ ตั๋วเอกสาร > SharePoint ของคุณ
  3. เขตข้อมูล crd69_ticketurl มีลิงก์ไปยังไฟล์ตั๋วที่ถูกอัปโหลด

(ไม่บังคับ) ขั้นตอนที่ 7: เปิดใช้งานการแจ้งเตือนทางอีเมล

วิธีการส่งอีเมลยืนยันไปยังผู้เข้าร่วมประชุม:

  1. ยกเลิกการใส่ความคิดเห็นในส่วน "ส่งอีเมลยืนยัน" ในสคริปต์
  2. แทนที่ {senderUserId} ด้วย ID ผู้ใช้ที่เปิดใช้งานกล่องจดหมาย ที่ถูกต้อง (ตัวอย่างเช่น บัญชีบริการ)
  3. ตรวจสอบให้แน่ใจว่าได้เพิ่มสิทธิ์ Mail.Send และให้ความยินยอมจากผู้ดูแลระบบแล้ว

ภาพรวมตรรกะของเซิร์ฟเวอร์
ตรรกะของเซิร์ฟเวอร์ผู้เขียน
วัตถุเซิร์ฟเวอร์
วิธีการโต้ตอบกับตาราง Dataverse โดยใช้ตรรกะของเซิร์ฟเวอร์