Objective-C中的Sharepoint 365 ACS OAuth:领域错误 - 需要帮助

Mik*_*mol 6 sharepoint objective-c oauth-2.0 acs sharepoint-2013

好的,所以我们正在构建一个iPhone应用程序来访问Office 365上托管的Sharepoint 2013网站.如果我在C#中构建这个,我已经完成了,我会很高兴只使用TokenHelper.cs来获取我大部分时间都在那里.不幸的是,据我所知,Objective-C还没有TokenHelper.

所以这是交易,我们已经可以成功获得OAuth身份验证/授权页面,我们成功获得了授权码.

在此之后我们感到难过,因为我们知道我们在POST中缺少了用于获取Access和Refresh令牌的域ID.我终于想出了TokenHelper是如何做到的,我们已经重复了这一点.(这是对/_vti_bin/client.svc的额外调用,您希望获得401,以便您可以从标头中提取领域ID)

我们现在有一个领域ID,从我在文档中看到的和TokenHelper以及在Fiddler中看到的,需要在以下两种方式中使用:在POST的URL构造内以及在文档中的资源值.该POST的标题.

所以POST网址看起来像这样:

accounts.accesscontrol.windows.net/{realm id}/tokens/oauth/2

我们的资源价值如下:

resource = 00000003-0000-0ff1-ce00-000000000000%2f {realm url}%40 {realm id}

这至少连接正常并接受我们的POST.不幸的是,我们收到以下消息:

ACS50012:身份验证失败.ACS90011:领域''不是当前服务命名空间的已配置领域.

这条消息让我觉得可能存在配置问题,但我真的无法确定.

有没有其他人尝试在Objective-C中对365网站执行OAuth并取得了成功?

我也可以发布代码,但我最初还是试图回避这个问题.

小智 5

我最近遇到了同样的问题,并且有一种感觉,你可能会遇到同样的问题.

OAuth的正确POST请求如下:

POST https://accounts.accesscontrol.windows.net/<REALM_GUID>/tokens/OAuth/2
x-www-form-urlencoded params:
grant_type:authorization_code
client_id:<CLIENT_ID>@<REALM_GUID>
client_secret:<CLIENT_SECRET>
code:<AUTH_CODE>
redirect_uri:<REDIRECT_URI>
resource:00000003-0000-0ff1-ce00-000000000000/<SHAREPOINT_AUTHORITY>@<REALM_GUID>
Run Code Online (Sandbox Code Playgroud)

对我来说主要的问题是"client_id"的值需要附加到客户端ID的域ID.不包括领域id将抛出"ACS90011:领域"不是当前服务命名空间的已配置领域.

HTH