Получите доступ к Twitter с помощью Swift
Я использую библиотеку Swifter для доступа к Twitter в своем приложении Swift для iOS 8:https://github.com/mattdonnelly/Swifter, Проблема в том, что я получаю ошибку 401 Not Authorized от Twitter. Я дважды проверил любые возможные причины этого:
Ключ потребителя / секрет неверенУбедитесь, что не используете API v1 (используйте 1.1)Когда обе эти проблемы были устранены (в соответствии с документацией Twitter), я все еще сталкиваюсь с этой проблемой. Я думаю, это как-то связано с тем, как я проверяю подлинность. Я пытаюсь получить доступ к общедоступной ленте без использования ACAccount на устройстве.
Вот мой код:
// MARK: Twitter
var swifter: Swifter
required init(coder aDecoder: NSCoder) {
self.swifter = Swifter(consumerKey: "KEY", consumerSecret: "SECRET")
super.init(coder: aDecoder)
}
func getTwitterTimeline() {
let failureHandler: ((NSError) -> Void) = {
error in
self.alertWithTitle("Error", message: error.localizedDescription)
}
self.swifter.getStatusesUserTimelineWithUserID("erhsannounce", count: 20, sinceID: nil, maxID: nil, trimUser: true, contributorDetails: false, includeEntities: true, success: {
(statuses: [JSONValue]?) in
if statuses != nil {
self.tweets = statuses!
}
}, failure: failureHandler)
}
func alertWithTitle(title: String, message: String) {
var alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
ОБНОВИТЬ: Я работал над приложением, пытаясь достичь функциональности, используя только аутентификацию приложения (не основанную на пользователях) и токен доступа для чтения общедоступной временной шкалы.
Я обновил код для использования токена доступа и аутентификации приложения. Все еще не работает, хотя
required init(coder aDecoder: NSCoder) {
let accessToken = SwifterCredential.OAuthAccessToken(key: "KEY", secret: "SECRET")
let credential = SwifterCredential(accessToken: accessToken)
self.swifter = Swifter(consumerKey: "cKEY", consumerSecret: "cSECRET", appOnly: true)
swifter.client.credential = credential
super.init(coder: aDecoder)
}