You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Google侧通过Python用OAuth连接Snowflake并获取oauth_access_token?

Google身份源场景下Snowflake OAuth访问令牌获取方案

首先需要先完成Google Cloud与Snowflake的OAuth集成前置配置,未完成配置前无法正常生成令牌。

前置配置确认

  • 已在Google Cloud控制台创建OAuth 2.0客户端凭据,记录好客户端ID、客户端密钥
  • 已在Snowflake侧创建对应OAuth安全集成,绑定Google的客户端信息、授权端点、令牌端点,且已给对应账号分配OAuth登录权限

交互场景令牌获取(需要用户手动授权)

  1. 构造Google OAuth授权链接,引导用户完成身份验证和授权,获取返回的授权码(code)
  2. 用授权码向Google令牌端点发起请求换取访问令牌,Python示例代码如下:
import requests

# 替换为你自己的配置值
GOOGLE_TOKEN_ENDPOINT = "https://oauth2.googleapis.com/token"
CLIENT_ID = "你的Google OAuth客户端ID"
CLIENT_SECRET = "你的Google OAuth客户端密钥"
REDIRECT_URI = "你配置的重定向URI"
AUTH_CODE = "上一步获取的授权码"

params = {
    "grant_type": "authorization_code",
    "code": AUTH_CODE,
    "client_id": CLIENT_ID,
    "client_secret": CLIENT_SECRET,
    "redirect_uri": REDIRECT_URI
}

resp = requests.post(GOOGLE_TOKEN_ENDPOINT, data=params)
oauth_access_token = resp.json()["access_token"]
  1. 拿到的oauth_access_token即可直接填入你提供的Snowflake连接代码的对应参数位置

非交互服务账号场景令牌获取(无用户参与的后台程序)

如果是后台服务需要自动连接,不需要用户手动授权,可以使用Google服务账号生成JWT签名,直接向令牌端点换取访问令牌,无需授权码步骤:

  • 先在Google Cloud控制台创建服务账号,下载JSON格式的密钥文件
  • 使用Google官方认证库google-auth直接生成对应令牌,示例代码如下:
from google.oauth2 import service_account

# 替换为你的服务账号密钥文件路径和Snowflake对应的OAuth作用域
SCOPES = ["https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"]
SERVICE_ACCOUNT_FILE = "你的服务账号密钥.json"

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
credentials.refresh(None)
oauth_access_token = credentials.token

注意事项

  • 普通OAuth访问令牌默认有效期为1小时,Snowflake侧接受的令牌有效期最长为10分钟,超时后需要重新生成
  • 若需要长期连接,可以同时获取刷新令牌,在令牌过期前用刷新令牌自动换取新的访问令牌,无需重新走授权流程

内容的提问来源于stack exchange,提问作者Siwawut Salikupt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:54:04