Data Collection
API 数据采集状态监控 · 配置凭证后可自动拉取真实数据
Google Ads API
花费 · 点击 · 展示数据
待配置
Developer Token
GOOGLE_ADS_DEVELOPER_TOKENOAuth2 Client ID
GOOGLE_ADS_CLIENT_IDOAuth2 Client Secret
GOOGLE_ADS_CLIENT_SECRETRefresh Token
GOOGLE_ADS_REFRESH_TOKENMCC Manager Account ID
GOOGLE_ADS_MCC_IDAdSense API
收益 · eCPM · 广告请求
待配置
OAuth2 Client ID
ADSENSE_CLIENT_IDOAuth2 Client Secret
ADSENSE_CLIENT_SECRETRefresh Token
ADSENSE_REFRESH_TOKENPublisher ID (pub-xxx)
ADSENSE_PUBLISHER_ID配置步骤指南
Google Ads API 配置
1
获取 Developer Token
Google Ads 后台 → 工具 → API 中心 → 申请 Developer Token
2
创建 OAuth2 凭证
Google Cloud Console → API & Services → Credentials → 创建 OAuth 2.0 Client ID(桌面应用类型)
3
生成 Refresh Token
使用 OAuth Playground 或 google-auth-oauthlib 完成授权流程,获取 Refresh Token
4
配置到 Supabase Secrets
Supabase Dashboard → Edge Functions → Secrets → 添加所有环境变量
AdSense API 配置
1
启用 AdSense API
Google Cloud Console → APIs & Services → Library → 搜索并启用 AdSense Management API
2
获取 Publisher ID
AdSense 后台 → 账户 → 账户信息 → 找到 pub-xxxxxxxxxxxxxxxx 格式的 ID
3
复用 OAuth2 凭证
可以使用与 Google Ads 相同的 OAuth2 Client ID/Secret,但需要单独生成包含 AdSense 权限的 Refresh Token
4
配置渠道 ID 映射
在账户配置页面,为每个 CID 填写对应的 AdSense Channel ID,确保数据能正确关联
API 凭证配置
直接填写保存到数据库填写 Developer Token、MCC ID、Client ID、Client Secret 并保存后,点击「一键 OAuth 授权」自动获取 Refresh Token。
必填
必填
Google Cloud Console 需要添加的回调地址
https://readdy.wosolink.com/oauth-callback
路径:APIs & Services → Credentials → OAuth 2.0 Client ID → Authorized redirect URIs
先保存 Client ID / Secret,再点「一键 OAuth 授权」,浏览器弹出 Google 授权页,授权后 Refresh Token 自动写入数据库。
OAuth2 Refresh Token 获取脚本
Python 3Client ID 和 Client Secret 已自动注入脚本,复制后可直接运行!
运行步骤
1
安装依赖:pip install requests(无需 google-auth-oauthlib)2
在 Google Cloud Console 同时启用 Google Ads API 和 AdSense Management API3
确认脚本中所有凭证已自动填入(来自凭证面板)4
运行脚本,浏览器打开授权页面,登录并点击「允许」5
把授权码粘贴到终端,复制输出的 Refresh Token 填入下方保存get_refresh_token.py
#!/usr/bin/env python3
"""
合并版:一次获取 Google Ads + AdSense 的 Refresh Token
运行前请先安装依赖:pip install requests
不需要 google-auth-oauthlib,不需要配置 redirect URI
"""
import requests
import urllib.parse
import webbrowser
# ============================================================
CLIENT_ID = "1003285956545-uendsvjm4afp0qkcis6glv744lno88hd.apps.googleusercontent.com"
CLIENT_SECRET = "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"
DEVELOPER_TOKEN = "ReDPhM48WQN6U0aDtr09cA"
MCC_ID = "631-573-3182"
ADSENSE_PUBLISHER_ID = "pub-xxxxxxxxxxxxxxxx"
# ============================================================
# 合并两个 API 的 Scopes,一次授权搞定
SCOPES = " ".join([
"https://www.googleapis.com/auth/adwords",
"https://www.googleapis.com/auth/adsense.readonly",
])
REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"
def get_all_tokens():
auth_url = (
"https://accounts.google.com/o/oauth2/auth"
f"?client_id={urllib.parse.quote(CLIENT_ID)}"
f"&redirect_uri={urllib.parse.quote(REDIRECT_URI)}"
f"&scope={urllib.parse.quote(SCOPES)}"
"&response_type=code"
"&access_type=offline"
"&prompt=consent"
)
print("\n" + "="*70)
print("Step 1: Open this URL in your browser (auto-opening now):")
print("="*70)
print(auth_url)
print("="*70)
webbrowser.open(auth_url)
print("\nStep 2: Login with your Google account and click Allow.")
print("Step 3: Google will show you a code — copy it.")
code = input("\nPaste the authorization code here: ").strip()
resp = requests.post("https://oauth2.googleapis.com/token", data={
"code": code,
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"redirect_uri": REDIRECT_URI,
"grant_type": "authorization_code",
})
tokens = resp.json()
if "refresh_token" not in tokens:
print("\nERROR:", tokens)
return
refresh_token = tokens["refresh_token"]
print("\n" + "="*70)
print("SUCCESS! Fill these into the Credentials Panel:")
print("="*70)
print()
print("[Google Ads]")
print(f" GOOGLE_ADS_CLIENT_ID = {CLIENT_ID}")
print(f" GOOGLE_ADS_CLIENT_SECRET = {CLIENT_SECRET}")
print(f" GOOGLE_ADS_REFRESH_TOKEN = {refresh_token}")
print()
print("[AdSense]")
print(f" ADSENSE_CLIENT_ID = {CLIENT_ID}")
print(f" ADSENSE_CLIENT_SECRET = {CLIENT_SECRET}")
print(f" ADSENSE_REFRESH_TOKEN = {refresh_token}")
print("="*70)
if __name__ == "__main__":
get_all_tokens()
快捷保存 Refresh Token运行脚本后,把输出的 Token 粘贴到这里直接保存
合并版脚本会同时保存到 Google Ads 和 AdSense 两个凭证记录
安全提示:Refresh Token 是高权限凭证,请勿提交到 Git 仓库或分享给他人。数据存储在 Supabase 数据库中,受 RLS 策略保护。
同步日志
(每30秒自动刷新)暂无同步日志。点击「立即同步」开始第一次数据同步。