OneDrive for Business:serviceEndpointUri 和 serviceResourceId 的地址错误
OneDrive for Business: wrong address of serviceEndpointUri and serviceResourceId
在我们的应用程序中,我们集成了许多外部资源,其中包括 OneDrive。
我们已经与 OneDrive(在 SkyDrive 之前)集成了几年。
去年,因为我们的用户要求支持ODfB,我们把SDK改成了OneDrive SDK(来自CocoaPods,干扰是pod ADALiOS)。效果不错。
但是,自上个月以来,此集成停止工作。请参阅下面的详细信息。
目前在登录 ODfB 帐户时,出现错误:
“There was a problem logging you in.
Could not discover the api endpoint for the given user. Make sure you have correctly enabled the SharePoint files permissions in Azure portal." Error code: 1
访问设置应该是正确的,我们按照以下说明进行设置:
https://dev.onedrive.com/index.htm
我们无法获取 resources URL
的正确地址
当我们发送 服务 的请求时:
作为响应,我们只得到 Directory 的 capability,而不像文档中那样:MyFiles.
{
"@odata.context" = "https://api.office.com/discovery/v2.0/me/$metadata#allServices";
value = (
{
"@odata.editLink" = "services('Directory@AZURE@v1.0')";
"@odata.id" = "https://api.office.com/discovery/v2.0/me/services('Directory@AZURE@v1.0')";
"@odata.type" = "#Microsoft.DiscoveryServices.ServiceInfo";
capability = Directory;
entityKey = "Directory@AZURE@v1.0";
providerId = "…";
providerName = Microsoft;
serviceAccountType = 2;
serviceApiVersion = "v1.0";
serviceEndpointUri = "https://graph.windows.net/miknobuisness.onmicrosoft.com/";
serviceId = AZURE;
serviceName = "Microsoft Azure";
serviceResourceId = "https://graph.windows.net/";
}
);
}
当我们请求其他rest:allServices时,响应有更多的描述:
{
"@odata.context" = "https://api.office.com/discovery/v2.0/me/$metadata#allServices";
value = (
{
"@odata.editLink" = "allservices('Directory@AZURE')";
"@odata.id" = "https://api.office.com/discovery/v2.0/me/allservices('Directory@AZURE')";
"@odata.type" = "#Microsoft.DiscoveryServices.ServiceInfo";
capability = Directory;
entityKey = "Directory@AZURE";
providerId = "72f988bf-86f1-41af-91ab-2d7cd011db47";
providerName = Microsoft;
serviceAccountType = 2;
serviceApiVersion = "";
serviceEndpointUri = "http://azure.microsoft.com/";
serviceId = AZURE;
serviceName = "Microsoft Azure";
serviceResourceId = "<null>";
},
{…},
{
"@odata.editLink" = "allservices('MyFiles@O365_SHAREPOINT')";
"@odata.id" = "https://api.office.com/discovery/v2.0/me/allservices('MyFiles@O365_SHAREPOINT')";
"@odata.type" = "#Microsoft.DiscoveryServices.ServiceInfo";
capability = MyFiles;
entityKey = "MyFiles@O365_SHAREPOINT";
providerId = "72f988bf-86f1-41af-91ab-2d7cd011db47";
providerName = Microsoft;
serviceAccountType = 2;
serviceApiVersion = "";
serviceEndpointUri = "http://www.microsoft.com/en-us/office365/online-software.aspx";
serviceId = "O365_SHAREPOINT";
serviceName = "Office 365 SharePoint";
serviceResourceId = "<null>";
}
文档中有关于我们应该获取 serviceEndpointUri 和 serviceResourceId 地址的信息,但它们是错误的。
你能帮帮我们吗?
我也在 github 上报告过:
https://github.com/OneDrive/onedrive-sdk-ios/issues/95
allservices
API 仅供参考,即让您作为人类开发人员了解您可以大致 得到什么。为了消除您学习路径中的任何障碍,我们已将其设为匿名,因此您可以立即通过浏览器访问。缺点是没有实际的 OAuth 令牌,服务无法确定确切的端点 URI 和资源 URI(至少不是在所有情况下)。这就是为什么我们决定通过serviceEndpointUri
属性,但我们想不出任何其他有用的东西,我们可以 return 作为 resourceUri
。这就是它为空的原因。
services
才是真正的API。这就是您的应用程序将达到的目标。一旦您熟悉了获取 OAuth 令牌的过程,您也应该开始以交互方式点击此 API 以查看一些真实的响应。
return由 services
API 编辑的功能取决于 OAuth 令牌中的范围。 (打开 Azure OAuth 令牌的好工具是 http://calebb.net。查找 scp
声明。)
所以要求 #1 是您的应用程序具有与文件相关的范围。参见 http://graph.microsoft.io/en-us/docs/authorization/permission_scopes。
要求 2 是代表您的应用调用的用户具有有效的 SharePoint 许可证。
在我们的应用程序中,我们集成了许多外部资源,其中包括 OneDrive。
我们已经与 OneDrive(在 SkyDrive 之前)集成了几年。 去年,因为我们的用户要求支持ODfB,我们把SDK改成了OneDrive SDK(来自CocoaPods,干扰是pod ADALiOS)。效果不错。
但是,自上个月以来,此集成停止工作。请参阅下面的详细信息。
目前在登录 ODfB 帐户时,出现错误:
“There was a problem logging you in. Could not discover the api endpoint for the given user. Make sure you have correctly enabled the SharePoint files permissions in Azure portal." Error code: 1
访问设置应该是正确的,我们按照以下说明进行设置: https://dev.onedrive.com/index.htm
我们无法获取 resources URL
当我们发送 服务 的请求时: 作为响应,我们只得到 Directory 的 capability,而不像文档中那样:MyFiles.
{
"@odata.context" = "https://api.office.com/discovery/v2.0/me/$metadata#allServices";
value = (
{
"@odata.editLink" = "services('Directory@AZURE@v1.0')";
"@odata.id" = "https://api.office.com/discovery/v2.0/me/services('Directory@AZURE@v1.0')";
"@odata.type" = "#Microsoft.DiscoveryServices.ServiceInfo";
capability = Directory;
entityKey = "Directory@AZURE@v1.0";
providerId = "…";
providerName = Microsoft;
serviceAccountType = 2;
serviceApiVersion = "v1.0";
serviceEndpointUri = "https://graph.windows.net/miknobuisness.onmicrosoft.com/";
serviceId = AZURE;
serviceName = "Microsoft Azure";
serviceResourceId = "https://graph.windows.net/";
}
);
}
当我们请求其他rest:allServices时,响应有更多的描述:
{
"@odata.context" = "https://api.office.com/discovery/v2.0/me/$metadata#allServices";
value = (
{
"@odata.editLink" = "allservices('Directory@AZURE')";
"@odata.id" = "https://api.office.com/discovery/v2.0/me/allservices('Directory@AZURE')";
"@odata.type" = "#Microsoft.DiscoveryServices.ServiceInfo";
capability = Directory;
entityKey = "Directory@AZURE";
providerId = "72f988bf-86f1-41af-91ab-2d7cd011db47";
providerName = Microsoft;
serviceAccountType = 2;
serviceApiVersion = "";
serviceEndpointUri = "http://azure.microsoft.com/";
serviceId = AZURE;
serviceName = "Microsoft Azure";
serviceResourceId = "<null>";
},
{…},
{
"@odata.editLink" = "allservices('MyFiles@O365_SHAREPOINT')";
"@odata.id" = "https://api.office.com/discovery/v2.0/me/allservices('MyFiles@O365_SHAREPOINT')";
"@odata.type" = "#Microsoft.DiscoveryServices.ServiceInfo";
capability = MyFiles;
entityKey = "MyFiles@O365_SHAREPOINT";
providerId = "72f988bf-86f1-41af-91ab-2d7cd011db47";
providerName = Microsoft;
serviceAccountType = 2;
serviceApiVersion = "";
serviceEndpointUri = "http://www.microsoft.com/en-us/office365/online-software.aspx";
serviceId = "O365_SHAREPOINT";
serviceName = "Office 365 SharePoint";
serviceResourceId = "<null>";
}
文档中有关于我们应该获取 serviceEndpointUri 和 serviceResourceId 地址的信息,但它们是错误的。
你能帮帮我们吗?
我也在 github 上报告过: https://github.com/OneDrive/onedrive-sdk-ios/issues/95
allservices
API 仅供参考,即让您作为人类开发人员了解您可以大致 得到什么。为了消除您学习路径中的任何障碍,我们已将其设为匿名,因此您可以立即通过浏览器访问。缺点是没有实际的 OAuth 令牌,服务无法确定确切的端点 URI 和资源 URI(至少不是在所有情况下)。这就是为什么我们决定通过serviceEndpointUri
属性,但我们想不出任何其他有用的东西,我们可以 return 作为 resourceUri
。这就是它为空的原因。
services
才是真正的API。这就是您的应用程序将达到的目标。一旦您熟悉了获取 OAuth 令牌的过程,您也应该开始以交互方式点击此 API 以查看一些真实的响应。
return由 services
API 编辑的功能取决于 OAuth 令牌中的范围。 (打开 Azure OAuth 令牌的好工具是 http://calebb.net。查找 scp
声明。)
所以要求 #1 是您的应用程序具有与文件相关的范围。参见 http://graph.microsoft.io/en-us/docs/authorization/permission_scopes。
要求 2 是代表您的应用调用的用户具有有效的 SharePoint 许可证。