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

โฟลว์การตรวจสอบสิทธิ์ผู้ใช้รายเดียวจะใช้ฟีเจอร์การให้สิทธิ์และการจัดการผู้ใช้ที่ 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. สร้างรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์โดยทำตาม วิธีการ เมื่อสร้างไคลเอ็นต์ 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 ให้ตั้งค่า 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/v26/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"
}