我们使用Microsoft Graph API上传商业和个人帐户的文件 .

帐户登录后,我们要求一些权限,但我们不会添加OneDrive所需的权限 . 在用户明确请求上传文件之后,我们发送另一个包含所有范围的AccessToken请求,直到now.readwrite.all . 直到(也许)一个月前,这种情况一直很好 . 现在它适用于企业帐户,但不适用于个人帐户 .

我们采取的措施:

  • 将用户重定向到 login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=...&redirect_uri=https%3A%2F%2Fmywebsite.com%2Fsignin-microsoft&response_type=code%20id_token&scope=openid%20offline_access%20profile%20email%20mail.readwrite%20mail.send%20contacts.readwrite%20calendars.readwrite%20people.read%20user.read%20files.readwrite.all&response_mode=form_post&nonce=636656...&state=CfDJ8MLMcPchE...

  • 用户选择他们的帐户(他们已登录的白名)

  • 他们被重定向到 https://login.live.com/oauth20_authorize.srf 与以下sreen:

enter image description here

我们的应用程序没有添加权限,我们也没有收到任何错误 . 以下是错误页面的响应:

Error Info
"/pp1600/oauth20_authorize.srf?client_id=9d3c...&scope=openid+offline_access+profile+email+mail.readwrite+mail.send+contacts.readwrite+calendars.readwrite+people.read+user.read+files.readwrite.all&redirect_uri=https%3a%2f%2fmywebsite.com%2fsignin-microsoft&response_type=code+id_token&state=CfD...&response_mode=form_post&nonce=636...&x-client-Ver=5.2.0&display=host&uaid=521...&msproxy=1&issuer=mso&tenant=common&ui_locales=en-US&username=pesho..."
loginserverprotocolhandler(846)
HR=0x80041018
Method string:GET
URL:"/pp1600/oauth20_authorize.srf"
Query string:"code=5"
Server protocol:HTTP/1.1

更新:经过几次尝试后,我实际上设法授予对OneDrive集成的一个帐户的访问权限 . 不确定改变了什么 . 我只是在Outlook和我们的应用程序中使用不同的Outlook帐户登录和注销 . 之后,我尝试使用其他帐户执行相同的过程,但再次失败 . 每次我尝试这个时,我都会在两个地方使用相同的帐户登录 .

我注意到的另一件事是,在同意所有权限之前,现在同意屏幕只显示了对文件权限的请求 .