ขั้นตอนการทำงานของการตรวจสอบสิทธิ์ผู้ใช้รายเดียว

เวิร์กโฟลว์บัญชีบริการและโฟลว์การตรวจสอบสิทธิ์แบบผู้ใช้รายเดียวใช้ประโยชน์จากฟีเจอร์การให้สิทธิ์และการจัดการผู้ใช้ที่ UI ของ Google Ads มีให้เพื่อมอบสิทธิ์เข้าถึงบัญชีที่จำเป็นทั้งหมดให้แก่แอป เวิร์กโฟลว์การตรวจสอบสิทธิ์นี้มี 2 ขั้นตอน ดังนี้

  • คุณให้สิทธิ์ผู้ใช้รายเดียวเข้าถึงบัญชี Google Ads ทั้งหมดที่แอปควรจัดการ
  • ผู้ใช้ให้สิทธิ์แอปของคุณในการจัดการบัญชี Google Ads ในนามของตนเอง ซึ่งเป็นการให้สิทธิ์เข้าถึงบัญชี Google Ads ทั้งหมดแก่แอป

เนื่องจากมีผู้ใช้เพียงคนเดียว คุณจึงใช้เครื่องมือต่างๆ เช่น gcloud CLI หรือตัวอย่างโค้ด GenerateUserCredential แทนการสร้างโฟลว์การตรวจสอบสิทธิ์ผู้ใช้ OAuth 2.0 ของคุณเองได้

กรณีการใช้งานที่เกี่ยวข้องสำหรับเวิร์กโฟลว์นี้คือเมื่อเข้าถึงบัญชีได้ ผ่านการเข้าสู่ระบบของผู้ใช้เพียงไม่กี่ราย (เช่น ผู้ใช้ 3-4 ราย) ดังนั้นความพยายามในการพัฒนา เพื่อสร้างเวิร์กโฟลว์การตรวจสอบสิทธิ์แบบหลายผู้ใช้ของ OAuth แบบเต็มจึงไม่คุ้มค่าเมื่อเทียบกับความพยายามในการขอรับการให้สิทธิ์สำหรับผู้ใช้ 3-4 รายโดยใช้เครื่องมือบรรทัดคำสั่ง เช่น gcloud CLI

ข้อเสีย

ขั้นตอนการทำงานนี้มีข้อเสียบางประการเมื่อเทียบกับขั้นตอนการทำงานของบัญชีบริการ

  1. เวิร์กโฟลว์การตรวจสอบสิทธิ์ผู้ใช้กำหนดให้คุณต้องสร้างรหัสไคลเอ็นต์และรหัสลับ OAuth 2.0 ในคอนโซล Google Cloud ซึ่งต้องมีขั้นตอนการกำหนดค่ามากกว่าการสร้างบัญชีบริการและคีย์
  2. หากผู้ใช้ที่ได้รับอนุญาตออกจากทีมหรือบริษัท แอปอาจหยุดทำงานหากคุณนำผู้ใช้ออกจากบัญชีหรือปิดใช้บัญชีผู้ใช้ บัญชีบริการไม่ได้เชื่อมโยงกับผู้ใช้แต่ละราย จึงหลีกเลี่ยงความเสี่ยงนี้ได้
  3. ผู้ใช้ที่ให้สิทธิ์บัญชี Google Ads ควรเปิดใช้ พาสคีย์ในบัญชี Google ของตนเพื่อป้องกันไม่ให้บัญชี Google ถูกบุกรุก เนื่องจากความปลอดภัยไม่ดี มัลแวร์ หรือฟิชชิง ไม่จำเป็นต้องใช้บัญชีบริการเพื่อเปิดใช้พาสคีย์ และบัญชีบริการมีความเสี่ยงต่อปัญหานี้น้อยกว่าเนื่องจากวิธีการโจมตีบางอย่างใช้กับบัญชีบริการโดยตรงไม่ได้

สร้างข้อมูลเข้าสู่ระบบ

  1. กำหนดค่าหน้าจอขอความยินยอม OAuth สำหรับ แอปพลิเคชันและเพิ่ม https://www.googleapis.com/auth/adwords เป็นขอบเขต OAuth 2.0 ดูรายละเอียดได้ที่การตั้งค่าหน้าจอขอความยินยอม OAuth

  2. สร้าง Client ID และ Client Secret โดยทำตามวิธีการ เมื่อสร้างไคลเอ็นต์ OAuth 2.0 แล้ว ให้ดาวน์โหลดไฟล์ JSON ของไคลเอ็นต์โดยคลิกปุ่มดาวน์โหลด JSON ใน กล่องโต้ตอบการยืนยัน บันทึกไฟล์เป็น credentials.json

  3. ระบุบัญชีผู้ใช้ที่มีสิทธิ์เข้าถึงบัญชี Google Ads ทั้งหมดที่คุณต้องการ จัดการโดยใช้แอป หากมีบัญชีที่ไม่มีสิทธิ์เข้าถึง ให้สิทธิ์เข้าถึงบัญชีแก่ผู้ใช้รายนั้น

  4. ดาวน์โหลดและติดตั้ง gcloud CLI เมื่อติดตั้งแล้ว ให้ตรวจสอบว่าเครื่องมือทำงานอย่างถูกต้องโดยเรียกใช้gcloud versionคำสั่ง จากพรอมต์บรรทัดคำสั่ง เอาต์พุตจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

    gcloud version
    Google Cloud SDK 492.0.0
    alpha 2024.09.06
    beta 2024.09.06
    bq 2.1.8
    bundled-python3-unix 3.11.9
    core 2024.09.06
    enterprise-certificate-proxy 0.3.2
    gcloud-crc32c 1.0.0
    
  5. สร้างโทเค็นการรีเฟรช OAuth 2.0 โดยเรียกใช้เครื่องมือ gcloud CLI ด้วยไฟล์ credentials.jsonจากขั้นตอนก่อนหน้า --client-id-file ต้องระบุเพื่อให้ระบบออกโทเค็นการรีเฟรชภายใต้โปรเจ็กต์คอนโซล Google API แทนที่จะเป็นโปรเจ็กต์เริ่มต้นของ gcloud CLI

    gcloud auth application-default login \
      --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \
      --client-id-file=PATH_TO_CREDENTIALS_JSON
  6. คำสั่ง gcloud จะเปิดหน้าต่างลงชื่อเข้าใช้บัญชี Google ในหน้าต่างเบราว์เซอร์ใหม่ และนำคุณไปตามขั้นตอนการตรวจสอบสิทธิ์ OAuth 2.0 ตรวจสอบว่าคุณลงชื่อเข้าใช้ในฐานะผู้ใช้ที่เลือกไว้ในขั้นตอนก่อนหน้า หากแอปไม่ได้รับการยืนยัน คุณอาจเห็นหน้าจอคำเตือน ในกรณีดังกล่าว คุณสามารถคลิกลิงก์ขั้นสูงและคลิกตัวเลือกไปที่ PROJECT_NAME (ไม่ปลอดภัย) ได้อย่างปลอดภัย

  7. หลังจากยืนยันขอบเขตแล้ว ให้คลิกปุ่มต่อไปเพื่อให้สิทธิ์ เบราว์เซอร์จะไปยัง https://cloud.google.com/sdk/auth_success ซึ่งบ่งบอกว่าการ ตรวจสอบสิทธิ์สำเร็จ หน้าเว็บจะแสดงข้อความต่อไปนี้

    Authorization code granted. Close this tab.

    คำสั่ง gcloud จะพิมพ์ข้อความต่อไปนี้

    Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]
    

    เปิดไฟล์ application_default_credentials.json เนื้อหาของไฟล์นี้จะคล้ายกับตัวอย่างต่อไปนี้

    {
      "account": "",
      "client_id": "******.apps.googleusercontent.com",
      "client_secret": "******",
      "refresh_token": "******",
      "type": "authorized_user",
      "universe_domain": "googleapis.com"
    }
    

การกำหนดค่าไลบรารีของไคลเอ็นต์

เลือกแท็บที่สอดคล้องกับภาษาโปรแกรมของคุณเพื่อดูวิธีการ กำหนดค่าไลบรารีของไคลเอ็นต์ หากผู้ใช้ที่ได้รับอนุญาตเข้าถึงบัญชีลูกค้าผ่านบัญชีดูแลจัดการ Google Ads (MCC) ให้ตั้งค่า login-customer-id (หรือ loginCustomerId) เป็นรหัสลูกค้า 10 หลักของบัญชีดูแลจัดการนั้นโดยไม่มีขีดกลาง

Java

กำหนดค่าคีย์ต่อไปนี้ในไฟล์ ads.properties

api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

ดูตัวเลือกเพิ่มเติมได้ที่คู่มือการกำหนดค่า

.NET

ตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ในอินสแตนซ์ GoogleAdsConfig แล้วใช้เพื่อเริ่มต้นออบเจ็กต์ GoogleAdsClient

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};
GoogleAdsClient client = new GoogleAdsClient(config);

ดูตัวเลือกเพิ่มเติมได้ที่คู่มือการกำหนดค่า

Python

กำหนดค่าคีย์ต่อไปนี้ในไฟล์ google-ads.yaml

client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True

ดูตัวเลือกเพิ่มเติมได้ที่คู่มือการกำหนดค่า

PHP

กำหนดค่าคีย์ต่อไปนี้ใน google_ads_php.ini

[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"

[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"

ดูตัวเลือกเพิ่มเติมได้ที่คู่มือการกำหนดค่า

Ruby

กำหนดค่าคีย์ต่อไปนี้ในไฟล์ google_ads_config.rb

Google::Ads::GoogleAds::Config.new do |c|
  c.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
  c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
  c.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
  c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end

ดูตัวเลือกเพิ่มเติมได้ที่คู่มือการกำหนดค่า

Perl

กำหนดค่าคีย์ต่อไปนี้ในไฟล์ googleads.properties

clientId=INSERT_OAUTH2_CLIENT_ID_HERE
clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

ดูตัวเลือกเพิ่มเติมได้ที่คู่มือการกำหนดค่า

curl

เริ่มต้นด้วยการใช้ไคลเอ็นต์ HTTP เพื่อดึงโทเค็นเพื่อการเข้าถึง OAuth 2.0 คู่มือนี้ ใช้คำสั่ง curl

curl \
  --data "grant_type=refresh_token" \
  --data "client_id=CLIENT_ID" \
  --data "client_secret=CLIENT_SECRET" \
  --data "refresh_token=REFRESH_TOKEN" \
  https://oauth2.googleapis.com/token

คุณใช้โทเค็นเพื่อการเข้าถึงในการเรียก API ได้ ตัวอย่างต่อไปนี้ แสดงวิธีเรียกใช้รายงานแคมเปญโดยใช้เมธอด GoogleAdsService.SearchStream เพื่อดึงข้อมูล แคมเปญในบัญชี คู่มือนี้ไม่ได้กล่าวถึงรายละเอียดของการรายงาน

curl -i -X POST \
  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "login-customer-id: LOGIN_CUSTOMER_ID" \
  --data-binary "@query.json"

เนื้อหาของ query.json มีดังนี้

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}