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

Azure Synapse PySpark笔记本调用Kantata API的重定向URI疑问

在Azure Synapse PySpark笔记本中解决Kantata OAuth2重定向URI问题

核心问题分析

Azure Synapse的PySpark环境属于无交互服务器场景,无法自动完成OAuth2授权的浏览器回调,因此必须选择Kantata支持的离线/无界面友好型重定向URI,同时确保该URI已在Kantata应用注册环节添加到允许列表。

解决方案步骤

1. 确认Kantata应用的合法重定向URI

在Kantata开发者控制台注册应用时,需配置允许的重定向URI:

  • 针对无交互环境,优先使用OAuth2标准离线回调URI:urn:ietf:wg:oauth:2.0:oob,该URI支持用户手动复制授权码,无需自动回调。
  • 若需使用Web型回调,需确保自定义URI(如https://your-custom-domain.com/callback)已添加到Kantata应用的授权回调列表,否则会触发权限校验错误。

2. 修正PySpark代码中的重定向URI设置

将redirect_uri参数设置为Kantata允许的合法值,并补充完整的授权码获取与令牌请求流程:

import requests
import json
from pyspark.sql.functions import udf, col, explode
from pyspark.sql.types import StructType, StructField, IntegerType, StringType, ArrayType
from pyspark.sql import Row
import os
from oauthlib.oauth2 import WebApplicationClient

# 替换为你的Kantata应用ID
client_id = "your_client_id"
client = WebApplicationClient(client_id)
authorization_url = 'https://app.mavenlink.com/oauth/authorize'
token_url = "https://app.mavenlink.com/oauth/token"

# 使用Kantata允许的重定向URI,此处以标准离线回调为例
redirect_uri = "urn:ietf:wg:oauth:2.0:oob"
# 替换为你需要的API权限范围
required_scopes = "read write"

# 生成授权URL
auth_url = client.prepare_request_uri(
    authorization_url,
    redirect_uri=redirect_uri,
    scope=required_scopes
)

# 输出授权URL,需手动在浏览器打开完成授权
print("授权URL:")
print(auth_url)

# 手动输入获取到的授权码
auth_code = input("请输入授权码:")

# 请求获取访问令牌
token_response = requests.post(
    token_url,
    data={
        "client_id": client_id,
        "client_secret": "your_client_secret",  # 建议从Azure Key Vault获取,避免硬编码
        "code": auth_code,
        "redirect_uri": redirect_uri,
        "grant_type": "authorization_code"
    }
)

# 解析并使用访问令牌
token_data = token_response.json()
access_token = token_data.get("access_token")
refresh_token = token_data.get("refresh_token")

# 后续可使用access_token调用Kantata API
headers = {"Authorization": f"Bearer {access_token}"}
api_response = requests.get("https://app.mavenlink.com/api/v1/projects.json", headers=headers)

3. 关键注意事项

  • 敏感信息安全:client_secret切勿硬编码在笔记本中,建议通过Azure Key Vault存储,利用Synapse密钥管理功能动态获取。
  • 权限范围匹配:确保required_scopes与Kantata应用注册时配置的权限一致,否则获取的令牌将无法访问目标API资源。
  • 长期任务优化:若需长期运行数据采集任务,需保存refresh_token,定期调用令牌接口刷新access_token,避免重复手动授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:27:43