我正在努力寻找正确的流程。我有一个rails应用程序,在Microsft App门户网站上注册(带有Id,Pwd和Scopes)。要尽可能简单:我需要通过我的应用程序访问公司的所有电子邮件(仅读取)。它是一个服务器应用程序,在夜间处理信息。
我的理解和尝试:
获取公司管理员的登录链接:
https://login.microsoftonline.com/{TENANT_ID}/oauth2/authorize?client_id={MY_APP_ID}&response_type=code&redirect_uri=MY_APP_ADDRESS&response_mode=query&prompt=admin_consent
在回调中,我确实得到了params中的代码。从该代码中,我获得了一个带有POST请求的令牌,指定:
client_id: MY_APP_ID,
grant_type: "authorization_code",
code: MY_RECEIVED_CODE,
redirect_uri: MY_APP_ADDRESS,
client_secret: MY_CLIENT_SECRET,
resource: "https://graph.microsoft.com/"
从那我得到一个令牌。获取邮件的简单请求适用于管理员邮箱(验证访问权限的人); '访问被拒绝'当我尝试组织中的任何其他人时。
最后一点。 Microsoft App门户中定义的范围:Group.Read.All和Mail.Read(适用于应用程序或委托服务)
完成这项工作的正确方法是什么?谢谢!
答案 0 :(得分:0)
将查询参数prompt = admin_consent添加到授权请求中,管理员将代表整个组织同意,而不仅仅是为了他/她自己。