资源上不存在范围 "allsites.write"
Scope "allsites.write" doesn't exist on the resource
我正在尝试设置从桌面应用程序对企业 Sharepoint Online 网站的编程访问。我的组织有 Office 365 订阅。
我已经在 Azure 门户中设置了一个注册应用程序,授予了 AllSites.Write
权限:
现在,我试图在浏览器控件中导航到以下 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: The application 'MyApp' asked for scope 'allsites.write' that doesn't exist on the resource '00000003-0000-0000-c000-000000000000'. Contact the app vendor.
范围就在那里。我错过了什么?
相同的登录流程适用于略有不同的范围 (Sites.ReadWrite.All
),但后来我发现图表 API 没有公开 SharePoint 列表项附件,因此决定回退到遗留的 SharePoint REST API。更改了门户上的范围,更改了登录中的范围 URL,出现错误。
陈旧的登录会话不会妨碍,不是吗?通常,当范围发生变化时,OAuth UI 弹出权限 window,不是吗?
已解决此错误,但现在 Sharepoint Online 不接受我的令牌,显示“无效的颁发者或签名”。作为记录,当我提供范围 https://microsoft.sharepoint-df.com/AllSites.Write
或 https://{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
参数,这在这里似乎是必不可少的(或者可能称为其他名称)。
我正在尝试设置从桌面应用程序对企业 Sharepoint Online 网站的编程访问。我的组织有 Office 365 订阅。
我已经在 Azure 门户中设置了一个注册应用程序,授予了 AllSites.Write
权限:
现在,我试图在浏览器控件中导航到以下 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: The application 'MyApp' asked for scope 'allsites.write' that doesn't exist on the resource '00000003-0000-0000-c000-000000000000'. Contact the app vendor.
范围就在那里。我错过了什么?
相同的登录流程适用于略有不同的范围 (Sites.ReadWrite.All
),但后来我发现图表 API 没有公开 SharePoint 列表项附件,因此决定回退到遗留的 SharePoint REST API。更改了门户上的范围,更改了登录中的范围 URL,出现错误。
陈旧的登录会话不会妨碍,不是吗?通常,当范围发生变化时,OAuth UI 弹出权限 window,不是吗?
已解决此错误,但现在 Sharepoint Online 不接受我的令牌,显示“无效的颁发者或签名”。作为记录,当我提供范围 https://microsoft.sharepoint-df.com/AllSites.Write
或 https://{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
参数,这在这里似乎是必不可少的(或者可能称为其他名称)。