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

Azure Function获取OAuth 2.0令牌运行失败及配置问题咨询

问题1解答:依赖安装与前置配置
  • 编译报错的核心原因是缺少对应的NuGet依赖包,不需要在Azure租户层面安装,只需要在当前Function App的函数目录下新增依赖配置即可:
    你在Portal的「Code + Test」页面,点击上方的文件下拉框,选择「新建文件」,命名为function.proj,粘贴如下内容:
    <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
            <TargetFramework>netcoreapp3.1</TargetFramework>
        </PropertyGroup>
        <ItemGroup>
            <PackageReference Include="Azure.Identity" Version="1.5.0" />
            <PackageReference Include="Azure.Security.KeyVault.Secrets" Version="4.2.0" />
            <PackageReference Include="Google.Apis.Auth" Version="1.57.0" />
            <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Http" Version="3.0.12" />
        </ItemGroup>
    </Project>
    
    保存后等待Function运行时自动还原依赖包。
  • 其他必须完成的前置配置:
    1. 进入Function App的「身份验证」菜单,开启系统分配的托管身份,保存后复制生成的服务主体ID
    2. 进入你要使用的Azure Key Vault的「访问策略」菜单,新增访问策略,给上述服务主体授予**密钥获取(Get)**权限,保存并发布访问策略
    3. 进入Function App的「配置」-「应用程序设置」,新增名为KEY_VAULT_URL的配置项,值为你的Key Vault的访问URI(格式为https://<你的Key Vault名称>.vault.azure.net/),保存配置
问题2解答:密钥库识别与代码占位符修正
  • 函数识别密钥库的逻辑:
    代码中Environment.GetEnvironmentVariable("KEY_VAULT_URL")会读取你刚才在Function应用设置中配置的Key Vault地址,初始化SecretClient时传入的ManagedIdentityCredential()会自动调用Function的系统托管身份凭证访问Key Vault,无需额外配置访问密钥。
  • 代码存在一处明显错误需要修正:
    原代码中string keyJson = kvClient.GetSecret("KEY_VAULT_URL").Value.Value;写法错误,GetSecret的入参应该是你提前存入Key Vault中的Google服务账号JSON密钥对应的密钥名称,请将KEY_VAULT_URL替换为你自己在Key Vault中创建的密钥名称。
  • 其他注意:如果你直接将类库格式的C#代码粘贴到Portal的.csx脚本中,需要删除外层的namespace和class定义,只保留using指令和Run方法即可适配脚本运行环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:54:02