我的注册应用程序使用REST API将文件与“ OneDrive for Business”同步。它工作了一年,但是最近,我的客户在与“ OneDrive for Business”同步时报告了一个错误。当我的应用列出或上传文件时,它会以错误响应。
例如,列出“ OneDrive for Business”中的文件:
“ OneDrive for Business”返回以下错误:
{
"error": {
"innerError": {
"code":"invalidAudienceUri"
},
"code": "unauthenticated",
"message": "Invalid audience Uri 'https://api.office.com/discovery/'."
}
}
我的应用程序已由OAuth2正确登录到“ OneDrive for Business”,并正确添加了身份验证标头。
有人可以告诉我错误的原因是什么,如何避免该问题?
答案 0 :(得分:0)
从布拉德的暗示中,我已经解决了问题,但可能不是一个好方法。 这是解决问题的程序步骤:(对不起,我已经省略了链接,因为我不能放置太多链接)
显示“ OAuth2同意”对话框,让用户允许应用程序访问OneDrive for Business,获取身份验证令牌(AuthToken)。
使用AuthToken获取发现API的AccessToken和RefreshToken。这是the help of discovery API。
使用上面的AccessToken访问发现API以获取您帐户的资源URI。结果类似于“ htts://yourdomain-my.sharepoint.com/”;
再次显示OAuth2同意对话框,让用户允许应用程序访问OneDrive for Business,获取身份验证令牌(AuthToken2)。
使用AuthToken2获取“ htts://yourdomain-my.sharepoint.com/”的AccessToken2和RefreshToken2。
通过AccessToken2和RefreshToken2访问“ OneDrive for Business”资源。
旧的OneDrive for Business API不需要Step4和Step5,只需使用AccessToken和RefreshToken来访问资源,但是新的API需要Step4和Step5。