可获取Office 365 Auth Token的API有哪些?非插件端如何获取?
解决方案
你要在Outlook插件外部获取身份认证令牌,无需爬虫的合法实现方式统一走微软OAuth 2.0身份验证流程,目前微软官方没有支持直接传入用户名密码返回令牌的公开API,这类明文传密的方式也存在极高的安全风险,早已被官方限制使用。
方案1:带用户交互的前端/全栈应用适用:授权码流
- 先在Azure应用注册平台创建你的外部应用,按需配置你需要的Outlook相关权限(如读取邮件、访问用户信息等),同时配置和你应用匹配的重定向回调地址。
- 引导使用你应用的用户跳转到微软官方身份认证页面完成登录授权,认证通过后你的应用会拿到授权码。
- 用授权码向微软身份平台发起请求,即可获取对应的访问令牌和刷新令牌,访问令牌可直接用于调用Outlook的各类开放接口。
方案2:无用户交互的后台服务适用:客户端凭据流
- 同样先完成Azure应用注册,给应用分配应用级别的Outlook访问权限,由租户管理员完成全局权限同意。
- 你的后台服务直接使用注册生成的客户端ID、客户端密钥/证书,即可向微软身份平台请求到访问令牌,全程不需要用户参与交互。
注意事项
- 你在Outlook插件内通过
Office.context.mailbox.getUserIdentityTokenAsync接口获取的是插件专属的用户身份令牌,仅用于插件后端验证用户身份,和上述OAuth流程拿到的访问令牌并不通用,不能直接用于外部应用调用Outlook接口。 - 不要尝试通过爬虫方式获取Outlook网页端的令牌,该方式不仅会触发微软的反爬风控导致账号受限,同时违反微软的服务使用条款,且令牌有效期极短,不具备生产可用性。
内容的提问来源于stack exchange,提问作者Gary Holiday
相关产品推荐
相关产品推荐

