ขั้นตอนการตรวจสอบสิทธิ์ผู้ใช้รายเดียวจะใช้ฟีเจอร์การให้สิทธิ์และการจัดการผู้ใช้ที่มีอยู่ใน 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 บัญชีบริการไม่จำเป็นต้องใช้พาสคีย์และมีความเสี่ยงน้อยกว่าต่อการโจมตีแบบกำหนดเป้าหมายไปยังผู้ใช้ เช่น ฟิชชิง
สร้างข้อมูลเข้าสู่ระบบ
กำหนดค่าหน้าจอขอความยินยอม OAuth สำหรับแอปพลิเคชันของคุณ และเพิ่ม
https://www.googleapis.com/auth/adwordsเป็นขอบเขต OAuth 2.0 ดูรายละเอียดได้ที่การตั้งค่าหน้าจอขอความยินยอม OAuthสร้างรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์โดยทำตามวิธีการ เมื่อสร้างไคลเอ็นต์ OAuth 2.0 แล้ว ให้ดาวน์โหลดไฟล์ JSON ของไคลเอ็นต์โดยคลิกปุ่มดาวน์โหลด JSON ในกล่องโต้ตอบการยืนยัน บันทึกไฟล์เป็น
credentials.jsonระบุบัญชีผู้ใช้ที่มีสิทธิ์เข้าถึงบัญชี Google Ads ทั้งหมดที่คุณต้องการจัดการโดยใช้แอป หากมีบัญชีที่ไม่มีสิทธิ์เข้าถึง ให้ให้สิทธิ์เข้าถึงบัญชีแก่ผู้ใช้รายนั้น ตรวจสอบว่าบัญชีผู้ใช้นี้ได้ตั้งค่าพาสคีย์แล้ว (อาจมีการหน่วงเวลาเพื่อความปลอดภัย 7 วันก่อนที่ระบบจะเชื่อถือพาสคีย์ที่สร้างใหม่)
ดาวน์โหลดและติดตั้ง gcloud CLI เมื่อติดตั้งแล้ว ให้ตรวจสอบว่าเครื่องมือทำงานอย่างถูกต้องโดยเรียกใช้คำสั่ง
gcloud versionจากพรอมต์บรรทัดคำสั่ง เอาต์พุตจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้gcloud versionGoogle 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สร้างโทเค็นการรีเฟรช 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คำสั่ง
gcloudจะเปิดหน้าต่างลงชื่อเข้าใช้บัญชี Google ในหน้าต่างเบราว์เซอร์ใหม่และนำคุณไปยังขั้นตอนการตรวจสอบสิทธิ์ OAuth 2.0 ลงชื่อเข้าใช้ในฐานะผู้ใช้ที่คุณเลือกในขั้นตอนก่อนหน้า แล้วยืนยันตัวตนโดยใช้พาสคีย์ หากแอปไม่ได้รับการยืนยัน คุณอาจเห็นหน้าจอคำเตือน ในกรณีเช่นนี้ คุณสามารถคลิกลิงก์ขั้นสูงและคลิกตัวเลือกไปที่ PROJECT_NAME (ไม่ปลอดภัย) ได้อย่างปลอดภัยหลังจากยืนยันขอบเขตแล้ว ให้คลิกปุ่มต่อไปเพื่อให้สิทธิ์ เบราว์เซอร์จะไปยัง
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"
}