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

如何用账号、密码及域通过Web.Contents获取数据替代Bearer令牌方式?

如何用账号密码自动获取Bearer Token并通过Web.Contents请求数据

完全可以通过账号、密码和域自动获取Bearer Token,替代手动从开发者工具复制的方式,核心是分两步走:先调用Token接口拿到凭证,再用凭证请求目标数据。你之前的尝试可能存在几个问题——比如用GET请求传密码(既不安全,多数API也不支持)、参数拼接格式有误,或者没正确解析返回的Token。

完整M代码示例

let
    // 配置登录信息,替换为你的实际内容
    username = "你的用户名",
    password = "你的密码",
    domain = "你的域",
    tokenApiUrl = "https://目标域名/restapi/v1/token", // 替换为实际的Token接口地址
    targetDataUrl = "你原来请求数据的目标URL",

    // 第一步:调用Token接口获取Bearer Token(以POST表单提交为例)
    tokenResponse = Web.Contents(tokenApiUrl, [
        Headers = [#"Content-Type" = "application/x-www-form-urlencoded"],
        Method = "POST",
        Content = Text.ToBinary(
            "username=" & Uri.EscapeDataString(username) & 
            "&password=" & Uri.EscapeDataString(password) & 
            "&domain=" & Uri.EscapeDataString(domain)
        )
    ]),
    tokenJson = Json.Document(tokenResponse),
    bearerToken = tokenJson[access_token], // 替换为Token接口返回中实际的Token字段名,比如有的是"token"

    // 第二步:用获取到的Token请求目标数据
    dataResponse = Web.Contents(targetDataUrl, [
        Headers = [
            Authorization = "Bearer " & bearerToken,
            #"Content-Type" = "application/json" // 根据目标API要求调整Content-Type
        ],
        Timeout = #duration(0, 0, 0, 1),
        IsRetry = false
    ]),
    finalData = Json.Document(dataResponse)
in
    finalData

关键注意点

  • 必须用POST请求传递账号密码:GET请求会把密码暴露在URL中,极不安全,且绝大多数正规的Token接口都要求用POST提交认证信息
  • 处理特殊字符:用Uri.EscapeDataString处理用户名、密码、域中的特殊字符(比如&、空格、中文等),避免参数拼接出错
  • 匹配Token接口的返回格式:不同API返回的Token字段名可能不同,比如有的是token、bearer_token,要根据实际返回的JSON结构调整tokenJson[access_token]中的字段
  • 适配目标API的Header要求:如果目标API有特定的Header要求(比如User-Agent),需要在请求目标数据的Headers中添加

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:35:25