在OneDrive for Business中列出文件时出现invalidAudienceUri错误

时间:2019-04-27 08:28:09

标签: onedrive

我的注册应用程序使用REST API将文件与“ OneDrive for Business”同步。它工作了一年,但是最近,我的客户在与“ OneDrive for Business”同步时报告了一个错误。当我的应用列出或上传文件时,它会以错误响应。

例如,列出“ OneDrive for Business”中的文件:

  

here

“ OneDrive for Business”返回以下错误:

{
    "error": {
        "innerError": {
            "code":"invalidAudienceUri"
        },
        "code": "unauthenticated",
        "message": "Invalid audience Uri 'https://api.office.com/discovery/'."
    }
}

我的应用程序已由OAuth2正确登录到“ OneDrive for Business”,并正确添加了身份验证标头。

有人可以告诉我错误的原因是什么,如何避免该问题?

1 个答案:

答案 0 :(得分:0)

从布拉德的暗示中,我已经解决了问题,但可能不是一个好方法。 这是解决问题的程序步骤:(对不起,我已经省略了链接,因为我不能放置太多链接)

  1. 显示“ OAuth2同意”对话框,让用户允许应用程序访问OneDrive for Business,获取身份验证令牌(AuthToken)。

  2. 使用AuthToken获取发现API的AccessToken和RefreshToken。这是the help of discovery API

  3. 使用上面的AccessToken访问发现API以获取您帐户的资源URI。结果类似于“ htts://yourdomain-my.sharepoint.com/”;

  4. 再次显示OAuth2同意对话框,让用户允许应用程序访问OneDrive for Business,获取身份验证令牌(AuthToken2)。

  5. 使用AuthToken2获取“ htts://yourdomain-my.sharepoint.com/”的AccessToken2和RefreshToken2。

  6. 通过AccessToken2和RefreshToken2访问“ OneDrive for Business”资源。

旧的OneDrive for Business API不需要Step4和Step5,只需使用AccessToken和RefreshToken来访问资源,但是新的API需要Step4和Step5。