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

 周俪劳伦瑶的瑶 发布于 2023-02-09 11:08

好的,所以我们正在构建一个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并取得了成功?

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

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

    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>
    

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

    HTH

    2023-02-09 11:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有