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

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

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

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

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

ข้อเสีย

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

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

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

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

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

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

  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"
}