通过Microsoft Graph API访问OneDrive Personal-令牌问题

时间:2020-05-19 17:53:22

标签: azure oauth-2.0 microsoft-graph-api onedrive hotmail

我正在考虑将Microsoft Graph API与个人OneDrive一起使用(通过hotmail帐户而非组织帐户登录!)。

我想创建一个Microsoft Graph客户端实例,并使用具有此类用例的Microsoft Graph API

var expandValue = this.clientType == ClientType.Consumer
                ? "thumbnails,children($expand=thumbnails)"
                : "thumbnails,children";

folder = await this.graphClient.Me.Drive.Root.Request().Expand(expandValue).GetAsync();

要检索访问令牌,我正在使用此article中所述的代码授予流程方法。

正在使用的授权端点

https://login.microsoftonline.com/common/oauth2/v2.0/authorize

正在使用的令牌终结点

https://login.microsoftonline.com/common/oauth2/v2.0/token

正在使用的范围

files.readwrite.all offline_access

使用hotmail帐户登录将返回非JWT令牌

这是此令牌的第一部分

EwBgA8l6BAAUO9chh8cJscQLmU + LSWpbnr0vmwwAAcGxJjYeNNkhw + sJQb2zJ

当尝试使用此令牌创建Microsoft Graph服务客户端实例并使用如上所示的请求时,出现此错误

代码:InvalidAuthenticationToken 消息:CompactToken解析失败,错误代码:8004920A 内部错误: 附加数据: 要求编号:3f472759-9718-47fb-8da0-df1646bb2fe8 日期:2020-05-19T16:42:44 ClientRequestId:3f472759-9718-47fb-8da0-df1646bb2fe8

我尝试将清单中的Azure AD应用程序注册“ signInAudience”参数设置为“ AzureADAndPersonalMicrosoftAccount”和“ PersonalMicrosoftAccount”。前者返回令牌,如上所示,然后在发送请求时失败,而在使用后者登录的观众时,令牌根本不会被检索,实际上没有返回任何额外信息的“错误请求”错误。

使用组织帐户登录时,一切正常。它显示了我组织的OneDrive for Business帐户中的个人文件夹。

此外,如果我改用以下行,我也可以查看组织的OneDrive for business共享文件夹(只需从graphClient之后删除.Me)即可。

folder = await this.graphClient.Drive.Root.Request().Expand(expandValue).GetAsync();

据推测,此article描述了如何获取Microsoft帐户案例的不记名令牌,我最终认为这是我所需要的。

正在使用的授权端点

https://login.live.com/oauth20_authorize.srf

正在使用的令牌终结点

https://login.live.com/oauth20_token.srf

正在使用的范围

onedrive.readwrite offline_access

使用这种方法仍会返回相同类型的令牌,因此从字面上看,我处于同一情况下。

我还注意到,不鼓励采用后一篇文章中的方法,实际上建议采用第1条中的方法!所以我只是浪费了更多时间:)

个人OneDrive访问(通过Hotmail帐户)必须使用哪种服务/ API?我得到什么样的令牌,该令牌可用于什么用途?我在这里怎么可能做错了?

0 个答案:

没有答案