โฟลว์การตรวจสอบสิทธิ์ผู้ใช้รายเดียวจะใช้ประโยชน์จากฟีเจอร์การให้สิทธิ์และการจัดการผู้ใช้ที่ 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 Cloud Console ซึ่งต้องมีขั้นตอนการกำหนดค่ามากกว่าการสร้างบัญชีบริการและคีย์
- แอปของคุณอาจต้องผ่านกระบวนการยืนยันแอป Google Cloud เพิ่มเติม
- หากผู้ใช้ที่ได้รับอนุญาตออกจากทีมหรือบริษัท แอปอาจหยุดทำงานหากคุณนำผู้ใช้ออกจากบัญชีหรือปิดใช้บัญชีผู้ใช้ บัญชีบริการไม่ได้เชื่อมโยงกับผู้ใช้แต่ละราย จึงหลีกเลี่ยงความเสี่ยงนี้ได้
- ผู้ใช้ที่ให้สิทธิ์บัญชี Google Ads ควรใช้มาตรการป้องกันเพิ่มเติม เช่น เปิดใช้การตรวจสอบสิทธิ์แบบ 2 ปัจจัยเพื่อป้องกันไม่ให้บัญชี Google ถูกบุกรุกเนื่องจากความปลอดภัยไม่ดี มัลแวร์ หรือฟิชชิง บัญชีบริการมีความเสี่ยงต่อปัญหานี้น้อยกว่า เนื่องจากโหมดการโจมตีบางโหมดเหล่านี้ไม่ได้ใช้กับบัญชีบริการโดยตรง
สร้างข้อมูลเข้าสู่ระบบ
ทำตามวิธีการเพื่อกำหนดค่าหน้าจอขอความยินยอม OAuth สำหรับแอปพลิเคชันและเพิ่ม
https://www.googleapis.com/auth/adwords
เป็นขอบเขต OAuth 2.0สร้าง Client ID และ Client Secret โดยทำตาม วิธีการ เมื่อสร้างไคลเอ็นต์ OAuth 2.0 แล้ว ให้ดาวน์โหลดไฟล์ JSON ของไคลเอ็นต์โดยคลิกไอคอนดาวน์โหลดไคลเอ็นต์ OAuth ก่อน แล้วคลิกปุ่มดาวน์โหลด JSON ในหน้าจอถัดไป บันทึก ไฟล์เป็น
credentials.json
ระบุบัญชีผู้ใช้ที่มีสิทธิ์เข้าถึงบัญชี Google Ads ทั้งหมดที่คุณต้องการ จัดการโดยใช้แอป หากมีบัญชีที่ไม่มีสิทธิ์เข้าถึง ให้ทำตามวิธีการเพื่อมอบสิทธิ์เข้าถึงที่จำเป็น
ดาวน์โหลดและติดตั้ง 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 gsutil 5.30
สร้างโทเค็นการรีเฟรช OAuth 2.0 โดยเรียกใช้เครื่องมือ 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>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" }
การกำหนดค่าไลบรารีของไคลเอ็นต์
เลือกแท็บที่สอดคล้องกับภาษาในการเขียนโปรแกรมของคุณเพื่อดูวิธีการ กำหนดค่าไลบรารีของไคลเอ็นต์
Java
กำหนดค่าคีย์ต่อไปนี้ในไฟล์ ads.properties
api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
ดูตัวเลือกเพิ่มเติมได้ในคำแนะนำในการกำหนดค่า
.NET
คุณสามารถเริ่มต้นอินสแตนซ์ GoogleAdsClient
ได้ที่รันไทม์โดยใช้ข้อมูลเข้าสู่ระบบที่คุณได้รับจากผู้ใช้ซึ่งคุณกำลังสร้างการเรียก API ไปยังบัญชีของผู้ใช้รายนั้น
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID",
OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET",
OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN",
...
};
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_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
ดูตัวเลือกเพิ่มเติมได้ในคำแนะนำในการกำหนดค่า
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_CLIENT_ID_HERE' c.client_secret = 'INSERT_CLIENT_SECRET_HERE' c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE' c.developer_token = 'INSERT_DEVELOPER_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://www.googleapis.com/oauth2/v3/token
ตอนนี้คุณใช้โทเค็นเพื่อเข้าถึงในการเรียก API ได้แล้ว ตัวอย่างต่อไปนี้
แสดงวิธีเรียกใช้รายงานแคมเปญโดยใช้เมธอด
GoogleAdsService.SearchStream
เพื่อดึงข้อมูล
แคมเปญในบัญชี คู่มือนี้ไม่ได้กล่าวถึงรายละเอียดของการรายงาน
curl -i -X POST https://googleads.googleapis.com/v21/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "developer-token: DEVELOPER_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"
}