Google Ads API ใช้โปรโตคอล OAuth 2.0 สำหรับการตรวจสอบสิทธิ์และการให้สิทธิ์เช่นเดียวกับ Google APIs อื่นๆ OAuth 2.0 ช่วยให้แอปไคลเอ็นต์ Google Ads API ของคุณ เข้าถึงบัญชี Google Ads ของผู้ใช้ได้โดยไม่ต้องจัดการหรือจัดเก็บ ข้อมูลการเข้าสู่ระบบของผู้ใช้
ทําความเข้าใจรูปแบบการเข้าถึง Google Ads
หากต้องการทํางานกับ Google Ads API อย่างมีประสิทธิภาพ คุณควรทําความเข้าใจวิธีการทํางานของโมเดลการเข้าถึง Google Ads เราขอแนะนำให้อ่านคู่มือรูปแบบการเข้าถึง 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"
นอกจากนี้ คุณยังส่งข้อมูลแบบเป็นโปรแกรมในขณะรันไทม์ได้โดยใช้
googleauth gem เพื่อสร้างข้อมูลเข้าสู่ระบบจากไฟล์ 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 แสดงวิธี
ดึงข้อมูลรายการบัญชีทั้งหมดที่ผู้ใช้มีสิทธิ์เข้าถึงโดยตรง
จากนั้นจะใช้บัญชีเหล่านี้เป็นค่าที่ถูกต้องสำหรับ
LoginCustomerIdsetting ได้
ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน
ไลบรารีของไคลเอ็นต์ Ruby ยังรองรับการตรวจสอบสิทธิ์ด้วย ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน (ADC) ด้วย ซึ่งช่วยให้คุณตั้งค่าเริ่มต้น สำหรับแอปพลิเคชันได้โดยไม่ต้องกำหนดค่าข้อมูล OAuth 2.0 ภายในการกำหนดค่าแอปพลิเคชัน
ซึ่งจะมีประโยชน์อย่างยิ่งสำหรับการพัฒนาในเครื่องหรือการพัฒนาเทียบกับ Google API อื่นๆ เนื่องจากคุณสามารถใช้ข้อมูลเข้าสู่ระบบเดียวกันซ้ำได้ ตราบใดที่ข้อมูลเข้าสู่ระบบดังกล่าวเข้าถึงขอบเขต OAuth 2.0 ที่ถูกต้องได้
สำหรับ Google Ads API โปรดตรวจสอบว่าข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันเข้าถึงhttps://www.googleapis.com/auth/adwordsขอบเขต OAuth 2.0 ได้
หากต้องการใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน เราขอแนะนำให้ใช้เครื่องมือบรรทัดคำสั่งของ Google Cloud และตรวจสอบสิทธิ์สำหรับ ADC ดังนี้
gcloud auth application-default login
คำสั่งนี้จะเปิดเว็บเบราว์เซอร์เพื่อดำเนินการตามขั้นตอนการตรวจสอบสิทธิ์ให้เสร็จสมบูรณ์สำหรับ บัญชี Google ของคุณ เมื่อได้รับอนุญาตแล้ว ระบบจะจัดเก็บข้อมูลเข้าสู่ระบบในตำแหน่งมาตรฐาน จากนั้นคุณต้องอัปเดตแอปพลิเคชันเพื่อใช้ ADC
เราขอแนะนำให้ใช้ไฟล์การกำหนดค่า คัดลอกไฟล์ google_ads_config.rb
ไปยังไดเรกทอรีหน้าแรก จากนั้นเพิ่มโทเค็นนักพัฒนาแอปและตั้งค่า
use_application_default_credentials เป็น true
# 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 Client Library ได้ที่หน้าการกำหนดค่า