Google Ads API ใช้โปรโตคอล OAuth 2.0 สำหรับการตรวจสอบสิทธิ์และการให้สิทธิ์เช่นเดียวกับ Google API อื่นๆ OAuth 2.0 ช่วยให้แอปไคลเอ็นต์ Google Ads API เข้าถึงบัญชี Google Ads ของผู้ใช้ได้โดยไม่ต้องจัดการหรือจัดเก็บข้อมูลเข้าสู่ระบบของผู้ใช้
ทำความเข้าใจโมเดลการเข้าถึง Google Ads
คุณควรทำความเข้าใจวิธีการทำงานของโมเดลการเข้าถึง Google Ads เพื่อให้ใช้งาน Google Ads API ได้อย่างมีประสิทธิภาพ เราขอแนะนำให้อ่าน คู่มือโมเดลการเข้าถึง Google Ads
เวิร์กโฟลว์ OAuth
มีเวิร์กโฟลว์ทั่วไป 3 รายการที่ใช้เมื่อทำงานกับ Google Ads API
ขั้นตอนบัญชีบริการ
นี่เป็นเวิร์กโฟลว์ที่แนะนำหากเวิร์กโฟลว์ของคุณไม่จำเป็นต้องมีการโต้ตอบจากบุคคล เวิร์กโฟลว์นี้ต้องมีขั้นตอนการกำหนดค่า ซึ่งผู้ใช้จะเพิ่ม บัญชีบริการลงในบัญชี Google Ads จากนั้นแอปจะใช้ข้อมูลเข้าสู่ระบบของบัญชีบริการเพื่อจัดการบัญชี Google Ads ของผู้ใช้ได้ หากต้องการกำหนดค่า ให้สร้างและดาวน์โหลดไฟล์คีย์ JSON ใน Google Cloud Console จากนั้นคัดลอก google_ads_config.rb ไปยังไดเรกทอรีแรก และแก้ไขเพื่อระบุตำแหน่งไฟล์คีย์ของบัญชีบริการและ อีเมลของผู้ใช้ที่จะเลียนแบบ:
# You can also authenticate using a service account. If "keyfile" is
# specified below, then service account authentication will be assumed and
# the above authentication fields ignored. Read more about service account
# authentication here:
# https://developers.google.com/google-ads/api/docs/oauth/service-accounts
# c.keyfile = 'path/to/keyfile.json'
# c.impersonate = 'INSERT_EMAIL_ADDRESS_TO_IMPERSONATE_HERE'
หากไม่ต้องการจัดเก็บข้อมูลนี้ไว้ในไฟล์และต้องการใช้ตัวแปรสภาพแวดล้อมแทน คุณสามารถตั้งค่า GOOGLE_ADS_JSON_KEY_FILE_PATH และ GOOGLE_ADS_IMPERSONATED_EMAIL ตามลำดับ
export GOOGLE_ADS_JSON_KEY_FILE_PATH="/path/to/your/service-account-key.json"
export GOOGLE_ADS_IMPERSONATED_EMAIL="your_email@email.com"
นอกจากนี้ คุณยังส่งข้อมูลแบบเป็นโปรแกรมได้ในขณะรันไทม์ โดยใช้ Gem googleauth เพื่อสร้างข้อมูลเข้าสู่ระบบจากไฟล์ JSON ของบัญชีบริการ
require 'googleauth'
require 'google/ads/google_ads'
# Path to your service account key file
key_file = "/path/to/your/service-account-key.json"
# Define the scopes needed for the Google Ads API
scopes = ['https://www.googleapis.com/auth/adwords']
# Create service account credentials
credentials = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: File.open(key_file),
scope: scopes
)
# Initialize the Google Ads API client with these credentials
client = Google::Ads::GoogleAds::Client.new do |config|
config.developer_token = "YOUR_DEVELOPER_TOKEN"
# Inject the service account credentials
config.oauth2_client = credentials
end
ดูข้อมูลเพิ่มเติมได้ที่คู่มือเวิร์กโฟลว์บัญชีบริการเพื่อ เรียนรู้เพิ่มเติม
ขั้นตอนการตรวจสอบสิทธิ์ผู้ใช้รายเดียว
คุณอาจใช้เวิร์กโฟลว์นี้หากใช้บัญชีบริการไม่ได้ เวิร์กโฟลว์นี้ต้องมีขั้นตอนการกำหนดค่า 2 ขั้นตอนดังนี้
- ให้สิทธิ์ผู้ใช้รายเดียวเข้าถึงบัญชีทั้งหมดที่จะจัดการโดยใช้ Google Ads API วิธีที่ใช้กันทั่วไปคือให้สิทธิ์ผู้ใช้เข้าถึงบัญชีดูแลจัดการ Google Ads API และลิงก์บัญชี Google Ads ทั้งหมดภายใต้บัญชีดูแลจัดการนั้น
- ผู้ใช้เรียกใช้เครื่องมือบรรทัดคำสั่ง เช่น gcloud หรือตัวอย่างโค้ด
GenerateUserCredentialsเพื่อให้สิทธิ์แอปของคุณในการจัดการ บัญชี Google Ads ทั้งหมดในนามของผู้ใช้
คุณสามารถกำหนดค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 สำหรับ Ruby ได้โดยคัดลอกไฟล์ google_ads_config.rb ไปยังไดเรกทอรีแรกและแก้ไขเพื่อ ใส่โทเค็นของนักพัฒนา รหัสไคลเอ็นต์ รหัสลับไคลเอ็นต์ และโทเค็นการรีเฟรช
# The developer token is required to authenticate that you are allowed to
# make API calls.
c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
# Authentication tells the API that you are allowed to make changes to the
# specific account you're trying to access.
# The default method of authentication is to use a refresh token, client id,
# and client secret to generate an access token.
c.client_id = 'INSERT_CLIENT_ID_HERE'
c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
ไคลเอ็นต์จะอ่านไฟล์การกำหนดค่าจากไดเรกทอรีแรกโดยอัตโนมัติหากสร้างอินสแตนซ์โดยไม่มีอาร์กิวเมนต์
client = Google::Ads::GoogleAds::GoogleAdsClient.new
หรือหากต้องการจัดเก็บไฟล์ไว้ที่อื่น คุณสามารถสร้างอินสแตนซ์ไคลเอ็นต์ได้โดยส่งเส้นทางไปยังตำแหน่งที่คุณเก็บไฟล์นี้
client = Google::Ads::GoogleAds::GoogleAdsClient.new('path/to/google_ads_config.rb')
หากไม่ต้องการจัดเก็บข้อมูลนี้ไว้ในไฟล์และต้องการใช้ตัวแปรสภาพแวดล้อมแทน คุณสามารถตั้งค่าตัวแปรแต่ละรายการได้ดังนี้
export GOOGLE_ADS_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
export GOOGLE_ADS_CLIENT_ID="INSERT_CLIENT_ID_HERE"
export GOOGLE_ADS_CLIENT_SECRET="INSERT_CLIENT_SECRET_HERE"
export GOOGLE_ADS_REFRESH_TOKEN="INSERT_REFRESH_TOKEN_HERE"
นอกจากนี้ คุณยังส่งข้อมูลแบบเป็นโปรแกรมได้ในขณะรันไทม์
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
config.client_id = 'INSERT_CLIENT_ID_HERE'
config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
end
ดูข้อมูลเพิ่มเติมได้ที่คู่มือเวิร์กโฟลว์การตรวจสอบสิทธิ์ผู้ใช้รายเดียวเพื่อ เรียนรู้เพิ่มเติม
ขั้นตอนการตรวจสอบสิทธิ์ผู้ใช้หลายคนหนึ่งเครื่อง
นี่เป็นเวิร์กโฟลว์ที่แนะนำหากแอปของคุณอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้และให้สิทธิ์แอปของคุณในการจัดการบัญชี Google Ads ในนามของผู้ใช้ แอปของคุณจะสร้างและจัดการข้อมูลเข้าสู่ระบบ OAuth 2.0 ของผู้ใช้ คุณสามารถกำหนดค่าเวิร์กโฟลว์นี้ได้ในลักษณะเดียวกับขั้นตอนของผู้ใช้รายเดียว แต่ต้องระบุ login_customer_id ด้วย
เราขอแนะนำให้คุณใช้ไฟล์การกำหนดค่า คัดลอกไฟล์ google_ads_config.rb ไปยังไดเรกทอรีแรกและแก้ไขเพื่อใส่โทเค็นของนักพัฒนา รหัสไคลเอ็นต์ รหัสลับไคลเอ็นต์ โทเค็นการรีเฟรช และรหัสลูกค้า
# The developer token is required to authenticate that you are allowed to
# make API calls.
c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
# Authentication tells the API that you are allowed to make changes to the
# specific account you're trying to access.
# The default method of authentication is to use a refresh token, client id,
# and client secret to generate an access token.
c.client_id = 'INSERT_CLIENT_ID_HERE'
c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
# Required for manager accounts only: Specify the login customer ID used to
# authenticate API calls. This will be the customer ID of the authenticated
# manager account. If you need to use different values for this field, then
# make sure fetch a new copy of the service after each time you change the
# value.
# c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
ไคลเอ็นต์จะอ่านไฟล์การกำหนดค่าจากไดเรกทอรีแรกโดยอัตโนมัติหากสร้างอินสแตนซ์โดยไม่มีอาร์กิวเมนต์
client = Google::Ads::GoogleAds::GoogleAdsClient.new
หรือหากต้องการจัดเก็บไฟล์ไว้ที่อื่น คุณสามารถสร้างอินสแตนซ์ไคลเอ็นต์ได้โดยส่งเส้นทางไปยังตำแหน่งที่คุณเก็บไฟล์นี้
client = Google::Ads::GoogleAds::GoogleAdsClient.new('path/to/google_ads_config.rb')
หากไม่ต้องการจัดเก็บข้อมูลนี้ไว้ในไฟล์และต้องการใช้ตัวแปรสภาพแวดล้อมแทน คุณสามารถตั้งค่าตัวแปรแต่ละรายการได้ดังนี้
export GOOGLE_ADS_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
export GOOGLE_ADS_CLIENT_ID="INSERT_CLIENT_ID_HERE"
export GOOGLE_ADS_CLIENT_SECRET="INSERT_CLIENT_SECRET_HERE"
export GOOGLE_ADS_REFRESH_TOKEN="INSERT_REFRESH_TOKEN_HERE"
export GOOGLE_ADS_LOGIN_CUSTOMER_ID="INSERT_LOGIN_CUSTOMER_ID_HERE"
นอกจากนี้ คุณยังส่งข้อมูลแบบเป็นโปรแกรมได้ในขณะรันไทม์
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
config.client_id = 'INSERT_CLIENT_ID_HERE'
config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
ดูข้อมูลเพิ่มเติมได้ที่คู่มือเวิร์กโฟลว์การตรวจสอบสิทธิ์ผู้ใช้หลายคนหนึ่งเครื่องเพื่อ เรียนรู้เพิ่มเติม ไลบรารีของไคลเอ็นต์ Ruby มีตัวอย่างโค้ดสำหรับการอ้างอิง GenerateUserCredentials เป็นตัวอย่างโค้ดบรรทัดคำสั่งที่แสดงวิธี รับการตรวจสอบสิทธิ์ผู้ใช้ในขณะรันไทม์เพื่อจัดการบัญชี Google Ads ในนามของ ผู้ใช้ คุณสามารถใช้ตัวอย่างโค้ดนี้เป็นข้อมูลอ้างอิงเพื่อสร้างแอปเดสก์ท็อปที่ต้องมีการตรวจสอบสิทธิ์ผู้ใช้
จะเกิดอะไรขึ้นหากผู้ใช้ของฉันจัดการหลายบัญชี
ผู้ใช้มักจะจัดการบัญชี Google Ads มากกว่า 1 บัญชี ไม่ว่าจะผ่านการเข้าถึงบัญชีโดยตรงหรือผ่านบัญชีดูแลจัดการ Google Ads ไลบรารีของไคลเอ็นต์ Ruby มีตัวอย่างโค้ดต่อไปนี้ที่แสดงวิธีจัดการกรณีดังกล่าว
- ตัวอย่างโค้ด GetAccountHierarchy แสดงวิธี ดึงข้อมูลรายการบัญชีทั้งหมดภายใต้บัญชีดูแลจัดการ Google Ads
- ตัวอย่างโค้ด ListAccessibleCustomers แสดง
วิธีดึงข้อมูลรายการบัญชีทั้งหมดที่ผู้ใช้มีสิทธิ์เข้าถึงโดยตรง
จากนั้นคุณสามารถใช้บัญชีเหล่านี้เป็นค่าที่ถูกต้องสำหรับการตั้งค่า
LoginCustomerId
ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน
ไลบรารีของไคลเอ็นต์ Ruby ยังรองรับการตรวจสอบสิทธิ์ด้วย ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน (ADC) ด้วย ซึ่งช่วยให้คุณตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นสำหรับแอปพลิเคชันได้โดยไม่ต้องกำหนดค่าข้อมูล OAuth 2.0 ภายในการกำหนดค่าแอปพลิเคชัน
วิธีนี้มีประโยชน์อย่างยิ่งสำหรับการพัฒนาในเครื่องหรือการพัฒนาเทียบกับ Google API อื่นๆ เนื่องจากคุณสามารถใช้ข้อมูลเข้าสู่ระบบเดิมซ้ำได้ ตราบใดที่ข้อมูลเข้าสู่ระบบนั้นเข้าถึงขอบเขต OAuth 2.0 ที่ถูกต้องได้
สำหรับ Google Ads API โปรดตรวจสอบว่าข้อมูลรับรองเริ่มต้นของแอปพลิเคชันเข้าถึงขอบเขต OAuth 2.0 https://www.googleapis.com/auth/adwords ได้
หากต้องการใช้ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน เราขอแนะนำให้ใช้ เครื่องมือบรรทัดคำสั่ง Google Cloud และตรวจสอบสิทธิ์สำหรับ ADC ดังนี้
gcloud auth application-default login
คำสั่งนี้จะเปิดเว็บเบราว์เซอร์เพื่อดำเนินการตามขั้นตอนการตรวจสอบสิทธิ์สำหรับบัญชี Google ให้เสร็จสมบูรณ์ เมื่อได้รับอนุญาตแล้ว ระบบจะจัดเก็บข้อมูลเข้าสู่ระบบไว้ในตำแหน่งมาตรฐาน จากนั้นคุณต้องอัปเดตแอปพลิเคชันเพื่อใช้ ADC
เราขอแนะนำให้คุณใช้ไฟล์การกำหนดค่า คัดลอกไฟล์ google_ads_config.rb
ไปยังไดเรกทอรีแรก จากนั้นเพิ่มโทเค็นของนักพัฒนาและตั้งค่า
use_application_default_credentials เป็น "จริง"
# The developer token is required to authenticate that you are allowed to
# make API calls.
c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
# You can also authenticate using Application Default Credentials (ADC)
# To understand how ADC discovers credentials in a given environment,
# see: https://developers.google.com/identity/protocols/application-default-credentials.
c.use_application_default_credentials = true
หากไม่ต้องการจัดเก็บข้อมูลนี้ไว้ในไฟล์และต้องการใช้ตัวแปรสภาพแวดล้อมแทน คุณสามารถตั้งค่า GOOGLE_ADS_DEVELOPER_TOKEN และ GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS ได้ดังนี้
export GOOGLE_ADS_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
export GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS="true"
นอกจากนี้ คุณยังส่งข้อมูลแบบเป็นโปรแกรมได้ในขณะรันไทม์ เมื่อเริ่มต้นไคลเอ็นต์ในโค้ด Ruby อย่าระบุข้อมูลเข้าสู่ระบบ OAuth2 อย่างชัดแจ้ง ไลบรารีจะตรวจหาและใช้ข้อมูลเข้าสู่ระบบที่ตั้งค่าโดยเครื่องมือบรรทัดคำสั่ง Google Cloud โดยอัตโนมัติ คุณยังคงต้องระบุโทเค็นของนักพัฒนา
# Initialize the client. It will automatically use Application Default Credentials.
client = Google::Ads::GoogleAds::Client.new do |config|
# Developer Token is mandatory for the Google Ads API.
config.developer_token = "YOUR_DEVELOPER_TOKEN"
# Optional: Specify a login customer ID if you are accessing accounts
# through a manager account.
# config.login_customer_id = "YOUR_LOGIN_CUSTOMER_ID"
# Do NOT include oauth2_client_id, oauth2_client_secret, or oauth2_refresh_token here.
end
ดูรายละเอียดเพิ่มเติมเกี่ยวกับตัวเลือกที่มีให้กำหนดค่าไลบรารีของไคลเอ็นต์ Ruby ได้ที่หน้าการกำหนดค่า