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

能否通过用户名密码获取Microsoft Teams Bearer Token并实现账户管理?

问题解答

可行性判断

能做到,但属于非官方操作,违反微软服务条款,大概率会触发账号风控,轻则令牌失效,重则账号被封禁,只适合临时测试,绝对不能用于生产环境。

两种令牌的区别

  • 浏览器里看到的Bearer令牌:是Microsoft Graph API的官方授权凭证,所有团队管理相关的API(创建团队、频道、添加成员)都靠它调用,是你需要重点获取的对象。
  • Skypetoken:是Teams客户端内部用来处理聊天、通话的专用令牌,和Graph API完全不兼容,对你要做的团队管理没用。

Python实现步骤

核心就是模拟你在浏览器里登录Teams的全过程,抓出Bearer令牌,再用令牌调用API:

1. 模拟登录获取令牌

  • 用requests库维持会话,先访问Teams的登录页面,抓取页面里的csrf令牌、会话ID等必要参数(需自己解析HTML或cookie)。
  • 把用户名密码打包成表单,POST到微软的登录接口,跟踪跳转流程,最后在访问Graph API(比如https://graph.microsoft.com/v1.0/me)的请求头里就能提取到Bearer令牌。
  • 注意:如果你的账号开启了MFA(多因素认证),这种方法直接失效,无法绕过。

2. 用令牌调用团队管理API

拿到令牌后,直接发送HTTP请求调用Graph API即可:

  • 创建团队:POST请求到https://graph.microsoft.com/v1.0/teams,请求体填写团队名称、模板等信息。
  • 创建频道:POST请求到https://graph.microsoft.com/v1.0/teams/{团队ID}/channels。
  • 邀请成员:POST请求到https://graph.microsoft.com/v1.0/teams/{团队ID}/members/$ref,指定成员的邮箱或用户ID。

核心代码片段(需根据实际登录流程补充参数):

import requests

# 维持会话,保存登录状态cookie
session = requests.Session()

# 1. 访问登录初始化页面,获取会话参数
login_init_url = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=1fec8e78-bce4-4aaf-ab1b-5451cc387264&response_type=code&redirect_uri=https%3A%2F%2Fteams.microsoft.com%2Fgo&response_mode=query&scope=openid%20profile%20email%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2FUser.Read%20https%3A%2F%2Fgraph.microsoft.com%2FGroup.ReadWrite.All&state=teamsRedirect&nonce=12345"
session.get(login_init_url)

# 2. 提交用户名密码(需补充登录页面抓取的csrf_token、ctx等参数)
login_post_data = {
    "login": "你的租户用户名",
    "passwd": "你的密码",
    # 此处需添加从登录页面解析出的csrf、ctx等必填参数
}
session.post("https://login.microsoftonline.com/common/login", data=login_post_data)

# 3. 触发令牌生成,从请求头提取Bearer令牌
me_response = session.get("https://graph.microsoft.com/v1.0/me")
bearer_token = me_response.request.headers["Authorization"].split(" ")[1]

# 4. 调用API创建团队
create_team_headers = {
    "Authorization": f"Bearer {bearer_token}",
    "Content-Type": "application/json"
}
create_team_body = {
    "displayName": "测试团队",
    "description": "脚本创建的测试团队",
    "template@odata.bind": "https://graph.microsoft.com/v1.0/teamsTemplates('standard')"
}
team_response = session.post("https://graph.microsoft.com/v1.0/teams", json=create_team_body, headers=create_team_headers)
print(team_response.json())

必须注意的风险与限制

  • 账号封禁风险:微软反爬与风控机制严格,自动化登录极易被检测到,账号可能被限制或永久封禁。
  • 令牌有效期短:Bearer令牌通常仅1小时有效,需模拟刷新流程才能持续使用。
  • 权限要求:你的账号必须拥有创建团队、邀请成员的对应权限(如Teams管理员角色),否则即使拿到令牌,API调用也会返回权限不足错误。
  • MFA无法绕过:若账号开启多因素认证,模拟密码登录的方法完全失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:10:58