由 Rodrigo Sieiro - @rsieiro
http://rodrigo.sharpcube.com
RSOAuthEngine 是一个基于 ARC 的 OAuth 引擎,用于 MKNetworkKit。它支持 OAuth 1.0a,并且完全兼容 MKNetworkKit 的现有类,允许您简单地继承 RSOAuthEngine
而不是 MKNetworkEngine
以获得 OAuth 支持。
如果您已经有了一个使用 MKNetworkKit 的项目,只需将 RSOAuthEngine
目录的内容添加到您的项目中,并将所有继承自 MKNetworkEngine
的类改继承自 RSOAuthEngine
。每次您需要发送 OAuth 签名请求时,将 enqueueOperation
的调用替换为 enqueueSignedOperation
。
如果您现在还没有使用 MKNetworkKit,请先按照这里的说明将其添加到您的项目中,然后再按照上一段中的说明添加 RSOAuthEngine。 重要:虽然说明中没有提及,MKNetworkKit 也需要 Security.framework。
使用 RSOAuthEngine 的常见 OAuth 流程应该如下所示
fillTokenWithResponseBody:type
(使用 RSOAuthRequestToken
作为类型)填充请求令牌。fillTokenWithResponseBody:type
(使用 RSOAuthRequestToken
作为类型)填充请求令牌,这次使用回调中收到的参数。fillTokenWithResponseBody:type
(使用 RSOAuthAccessToken
作为类型)填充访问令牌。enqueueSignedOperation
发送的请求都将由您的令牌签名。或者您可以在初始化后使用 setAccessToken:secret
定义之前存储的访问令牌。如果您需要或希望使用 xAuth 代替请求令牌/授权流程,请查看 Instapaper 示例。
关于此示例项目演示了如何使用 RSOAuthEngine 进行Twitter身份验证。它包含一个基本引擎,该引擎实现了Twitter的OAuth身份验证流程,并允许您发布推文。它还显示了如何在Keychain中持久化OAuth访问令牌。Twitter引擎不应被视为生产代码,仅包含以演示 RSOAuthEngine。 构建要构建演示项目,请按照以下步骤进行
提示在状态消息中从左向右滑动以清除先前存储的OAuth令牌。 |
当前,此引擎已与Twitter和Instapaper进行了测试。如果您使用 RSOAuthEngine 实现OAuth与其他服务进行身份验证的身份验证,请告知我,以便我可以更新此会话。
RSOAuthEngine 根据 MIT 许可授权。如果您在项目中使用它,请给予一些形式的归属,例如在某个地方留下“谢谢”的笔记。我也很高兴如果您使用了我的代码,如果有,欢迎与我联系!
完整的许可证文本如下
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
RSOAuthEngine 可能包含由Scott James Remnant编写的 ASI-HTTP-Request-OAuth 的代码以及由Jonathan George编写的iPhone版本 OAuthConsumer 的代码。我使用这两个项目的代码片段作为参考资料来编写此引擎。