Last active
June 15, 2019 02:52
-
-
Save masashi-sutou/cecc9467c09943fd04657e50de6dc7d7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
import Swifter | |
@objc class SwifterWrapper: NSObject { | |
@objc static let share: SwifterWrapper = SwifterWrapper() | |
private var twitter: Swifter? | |
private var callbackUrl: URL? | |
private override init() { | |
} | |
// MARK: - キーとシークレットの設定 | |
@objc func setup(consumerKey: String, consumerSecret: String) { | |
callbackUrl = URL(string: "twitterkit-" + consumerKey + "://") | |
twitter = Swifter(consumerKey: consumerKey, consumerSecret: consumerSecret) | |
} | |
// MARK: - スキーマのコールバックハンドリング | |
@objc class func handleOpen(url: URL) -> Bool { | |
Swifter.handleOpenURL(url) | |
return true | |
} | |
// MARK: - 連携 | |
@objc func login(controller: UIViewController, success: @escaping (_ userID: String?, _ screenName: String?, _ token: String?, _ tokenSecret: String?) -> Void, failure: @escaping (_ error: Error?) -> Void) { | |
guard let callbackUrl = self.callbackUrl else { | |
failure(nil) | |
return | |
} | |
twitter?.authorize(withCallback: callbackUrl, presentingFrom: controller, success: { (accessToken, _) in | |
guard let key = accessToken?.key else { | |
failure(nil) | |
return | |
} | |
guard let secret = accessToken?.secret else { | |
failure(nil) | |
return | |
} | |
guard let userID = accessToken?.userID else { | |
failure(nil) | |
return | |
} | |
guard let screenName = accessToken?.screenName else { | |
failure(nil) | |
return | |
} | |
success(userID, screenName, key, secret) | |
}, failure: { (error) in | |
failure(error) | |
}) | |
} | |
// MARK: - つぶやき投稿 | |
func inviteTweet(status: String, media: Data?) { | |
guard let media = media else { | |
twitter?.postTweet(status: status) | |
return | |
} | |
twitter?.postTweet(status: status, media: media) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment