【问题标题】:invalidAudienceUri error when list files in OneDrive for Business在 OneDrive for Business 中列出文件时出现无效的 Audience Uri 错误
【发布时间】:2019-09-16 14:54:31
【问题描述】:

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

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

https://mydomain-my.sharepoint.com/_api/v2.0/me/drive/items/root/children?select=id,name,size,deleted,folder,file,parentReference,lastModifiedDateTime

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

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

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

谁能告诉我错误的原因是什么,如何避免这个问题?

【问题讨论】:

  • 如果您将不记名令牌粘贴到 jwt.ms 中,aud 声明的值是多少。听起来您获得令牌时提供的受众(有时称为资源)是发现端点,而不是 SharePoint。
  • 谢谢 Brad,“aud”是“api.office.com/discovery”,我该如何更改 aud?
  • 您能否更新您的问题以包括如何获得令牌?如果存在,则删除客户端机密。
  • 你好布拉德,谢谢你的提示,我已经解决了问题,请参阅下面的答案。

标签: onedrive


【解决方案1】:

根据 Brad 的提示,我已经解决了问题,但可能不是一个漂亮的方法。 以下是解决问题的程序步骤:(对不起,我省略了链接,因为我不能放太多链接)

  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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多