RSOAuthEngine 1.0.0

RSOAuthEngine 1.0.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

未声明 维护。



  • Rodrigo Sieiro

由 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 流程应该如下所示

  1. 创建一个继承自 RSOAuthEngine 的类。
  2. 使用包含消费者密钥和密钥之一的定义初始化器初始化您的类。
  3. 发送一个签名操作以获取一个请求令牌。
  4. 使用 fillTokenWithResponseBody:type (使用 RSOAuthRequestToken 作为类型)填充请求令牌。
  5. 将用户重定向到授权页面并等待回调。
  6. 再次使用 fillTokenWithResponseBody:type (使用 RSOAuthRequestToken 作为类型)填充请求令牌,这次使用回调中收到的参数。
  7. 发送另一请求以获取访问令牌。
  8. 使用 fillTokenWithResponseBody:type (使用 RSOAuthAccessToken 作为类型)填充访问令牌。
  9. 从现在起,所有使用 enqueueSignedOperation 发送的请求都将由您的令牌签名。

或者您可以在初始化后使用 setAccessToken:secret 定义之前存储的访问令牌。如果您需要或希望使用 xAuth 代替请求令牌/授权流程,请查看 Instapaper 示例。

Twitter 示例

Screenshot

关于

此示例项目演示了如何使用 RSOAuthEngine 进行Twitter身份验证。它包含一个基本引擎,该引擎实现了Twitter的OAuth身份验证流程,并允许您发布推文。它还显示了如何在Keychain中持久化OAuth访问令牌。Twitter引擎不应被视为生产代码,仅包含以演示 RSOAuthEngine

构建

要构建演示项目,请按照以下步骤进行

  1. 在项目目录中,运行 git submodule update --init 以检索MKNetworkKit(作为子模块添加到项目中)。
  2. RSTwitterEngine.m 的顶部设置您的消费者密钥和密钥,并删除 #error 宏。如果您没有消费者密钥/密钥,请在 https://dev.twitter.com/apps 上注册您的应用以获取一对密钥。**重要**:您在注册时需要为您的应用添加一个虚拟回调URL,否则Twitter不会允许您在OAuth请求中发送回调URL。

提示

在状态消息中从左向右滑动以清除先前存储的OAuth令牌。

Instapaper示例

Screenshot

关于

此示例项目演示了如何使用 RSOAuthEngine 与xAuth进行Instapaper身份验证。它包含一个基本引擎,该引擎实现了Instapapers的xAuth身份验证流程,并允许您将书签添加到您的帐户。它还显示了如何在Keychain中持久化OAuth访问令牌。Instapaper引擎不应被视为生产代码,仅包含以演示 RSOAuthEngine

构建

要构建演示项目,请按照以下步骤进行

  1. 在项目目录中,运行 git submodule update --init 以检索MKNetworkKit(作为子模块添加到项目中)。
  2. RSInstapaperEngine.m 的顶部设置您的消费者密钥和密钥,并删除 #error 宏。如果您没有消费者密钥/密钥,请在此页面上注册您的应用以获取一对密钥。**重要**:大多数Instapaper API方法仅适用于具有订阅账户的用户。

提示

在状态消息中从左向右滑动以清除先前存储的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 的代码。我使用这两个项目的代码片段作为参考资料来编写此引擎。