微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

资源上不存在范围“allsites.write”

如何解决资源上不存在范围“allsites.write”

我正在尝试通过桌面应用程序设置对公司 Sharepoint Online 网站的编程访问。我的组织订阅了 Office 365。

我已在 Azure 门户中设置了一个注册的应用程序,并授予了 AllSites.Write 权限:

Azure portal shot

现在,我正在尝试导航到浏览器控件中的以下 URL:

URL = "https://login.microsoftonline.com/" + Tenant + "/oauth2/v2.0/authorize?" +
    "client_id=" & ClientID +
    "&response_type=code" +
    "&redirect_uri=foo%3A%2F%2Fback" +
    "&response_mode=query" +
    "&scope=user.read%20allsites.write"

一旦我这样做,就没有 UI,我立即收到带有以下错误消息的回调:

AADSTS650053:应用程序“MyApp”请求资源“00000003-0000-0000-c000-000000000000”上不存在的范围“allsites.write”。联系应用供应商。

范围就在那里。我错过了什么?

相同的登录流程适用于略有不同的范围 (Sites.ReadWrite.All),但后来我发现 Graph API 没有公开 SharePoint 列表项附件,并决定回退到旧版 SharePoint REST API。更改了门户上的范围,更改了登录 URL 中的范围,出现错误

陈旧的登录会话不会妨碍,是吗?通常,当范围改变时,OAuth UI 会弹出权限窗口,不是吗?

解决方法

已解决此错误,但现在 Sharepoint Online 不接受我的令牌,显示“发行人或签名无效”。作为记录,当我提供范围 https://microsoft.sharepoint-df.com/AllSites.Writehttps://{mytenant}.sharepoint.com/AllSites.Write 时,登录流程有效。


更新:现在接受。为此,我必须使用旧版本的 OAuth 端点:https://login.microsoftonline.com/{tenant}/oauth2/authorize 用于启动登录流程,https://login.windows.net/{tenant}/oauth2/token?api-version=1.0 用于交换令牌代码。后者采用 resource 参数,即 https://{tenant}.sharepoint.com

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token 处的端点,在 Graph 文档中都指定了,不采用 resource 参数,这在这里似乎是必不可少的(或者它可能被称为其他东西)。>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。