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

如何用C#从Graph Explorer获取带指定Teams权限的访问令牌?

问题解答

令牌长度差异的原因

你当前用的是客户端凭证流(Client Credentials Flow)获取的应用权限令牌,而Graph Explorer里的是基于用户登录的委派权限令牌。两种令牌的受众、包含的声明内容不同,长度有差异是正常现象,无需担忧。

实现Teams消息发送的步骤

要实现向Teams发送消息,需完成两项核心操作:在Azure AD中配置应用权限,以及修改代码中的作用域。

1. 在Azure AD中配置应用权限

  • 登录Azure门户,找到你的应用注册
  • 进入「API权限」页面,点击「添加权限」
  • 选择「Microsoft Graph」→「应用权限」
  • 搜索并添加以下权限:
    • Team.ReadBasic.All
    • Channel.ReadBasic.All
    • ChannelMessage.Send
    • Chat.ReadWrite
  • 点击「授予管理员同意」(应用权限必须经过管理员同意才能生效)

2. 修改C#代码

将原代码中的作用域数组替换为对应的应用权限作用域,完整代码如下:

using Microsoft.Identity.Client;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        string clientId = "YOUR_CLIENT_ID";
        // 替换为所需的应用权限作用域
        string[] scopes = new string[] 
        { 
            "https://graph.microsoft.com/Team.ReadBasic.All",
            "https://graph.microsoft.com/Channel.ReadBasic.All",
            "https://graph.microsoft.com/ChannelMessage.Send",
            "https://graph.microsoft.com/Chat.ReadWrite"
        };
        string tenantId = "YOUR_TENANT_ID";
        string clientSecret = "YOUR_CLIENT_SECRET";

        IConfidentialClientApplication app = 
            ConfidentialClientApplicationBuilder.Create(clientId)
                .WithClientSecret(clientSecret)
                .WithAuthority(new Uri($"https://login.microsoftonline.com/{tenantId}"))
                .Build();

        AuthenticationResult result = await app.AcquireTokenForClient(scopes)
                .ExecuteAsync();

        string accessToken = result.AccessToken;
        Console.WriteLine($"Access token: {accessToken}");
    }
}

注意事项

  • 客户端凭证流仅适用于应用权限,无法使用依赖用户上下文的委派权限
  • 必须确保应用权限已获得管理员同意,否则会返回权限不足的错误
  • 后续调用Microsoft Graph API发送Teams消息时,需使用此令牌完成身份验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 18:50:09