⚠️此项目已弃用: #360⚠️


Swifter

Carthage compatible

入门指南

安装

如果您使用 Xcode 6 及更高版本,只需将 Swifter Xcode 项目拖到您自己的项目中,并将 SwifteriOS 或 SwifterMac 框架添加为嵌入式框架,即可安装 Swifter。

用法

Swifter 可以与 Twitter 允许的三种不同类型的身份验证协议一起使用。您可以指定要使用的协议,如下所示。 有关每种身份验证协议的更多信息,请查看 Twitter OAuth 帮助

使用 ACAccount 实例化

// Instantiation using ACAccount
var swifter = Swifter(account: twitterAccount)

// Instantiation using Twitter's OAuth Consumer Key and secret
swifter = Swifter(consumerKey: TWITTER_CONSUMER_KEY, consumerSecret: TWITTER_CONSUMER_SECRET)

// Instantiation using App-Only authentication
swifter = Swifter(consumerKey: TWITTER_CONSUMER_KEY, consumerSecret: TWITTER_CONSUMER_SECRET, appOnly: true)

示例请求

OAuth 授权

swifter.authorize(with: callbackURL, success: { accessToken, response in
  // ...
}, failure: { error in
  // ...
})

获取主时间线

swifter.getHomeTimeline(count: 50, success: { json in
  // ...
}, failure: { error in
  // ...
})

ListTag、UserTag 和 UsersTag

某些 Twitter API 调用允许您使用 user_idscreen_name 来获取与用户相关的对象(以及列表的 list_id/slug)。 Swifter 提供了一个解决方案,可以防止用户意外使用错误的方法,并且没有返回任何内容。 有关更多信息,请查看 SwifterTag.swift 文件。

swifter.getUserFollowersIDs(for: .id(userId), success: { json, prev, next in
    // alternatively, you can use .screenName(userName)
    // ...
}, failure: { error in
    // ...
})
swifter.getListSubscribers(for: .slug(listSlug, owner: .screenName(userName)), success: { json, prev, next in
    // alternatively, you can use .id(listId)
    // ...
}, failure: { error in
    // ...
})

此外,对于接受屏幕名称数组或 userIDs 数组的方法,还有 .screenName(arrayOfUserNames).id(arrayOfIds)

流式 API

重要提示:Twitter 已弃用流式 API,转而使用新的 帐户活动 API。 您可以在此处找到有关迁移到新 API 的更多信息。 Twitter 计划于 2018 年 8 月 16 日删除旧的流式 API,Swifter 将在此之后不久删除其端点。

swifter.streamRandomSampleTweets(progress: { status in
  // ...
}, stallWarnings: { code, message, percentFull in
  // ...
}, failure: { error in
  // ...
})

状态更新

swifter.postTweet(status: "Hello, world.", success: { status in
  // ...
}, failure: { error in
  // ...
})

JSON 处理

为了简化访问 Twitter 请求返回的数据,Swifter 提供了一个用于表示 JSON 的类,您可以像与字典一样与它交互。 使用它的主要优点是,与 Dictionary<String, AnyObject> 相比,它可以更好地与 Swift 严格的类型系统配合使用,并且不需要您不断地向下转换访问的对象。 它还消除了对大量可选链的需求,从而使您的代码更加简洁易读。

这是一个示例,说明如何访问状态列表中第一个元素的文本

if let statusText = statuses[0]["text"].string {
    // ...
}

OAuth Consumer Tokens (OAuth 消费者令牌)

在 Twitter REST API v1.1 中,每个客户端应用程序都必须使用 consumer key 和 consumer secret 令牌进行身份验证。 您可以在 Twitter 的开发人员网站上为您的应用程序请求 consumer 令牌。

单点登录 [已弃用]

如果您使用 SSO 授权,则应将 URL-Scheme 添加到您的 Info.plist。 将 $(TWITTER_CONSUMER_KEY) 替换为您的 CONSUMER KEY。

<key>CFBundleURLTypes</key>
<array>
	<dict>
		<key>CFBundleTypeRole</key>
		<string>Editor</string>
		<key>CFBundleURLSchemes</key>
		<array>
			<string>swifter-$(TWITTER_CONSUMER_KEY)</string>
		</array>
	</dict>
</array>

许可证

Swifter 在 MIT 许可证下获得许可。 有关更多信息,请参阅 LICENSE 文件。