Установлен Twitter через Fabric, логин работает, постоянная ошибка при запросе твитов

Я установил Twitter SDK в проект через Fabric.app. Я могу войти в свою учетную запись Twitter, однако, когда я делаю что-либо, связанное с запросом твитов, я добавляю эти print заявления:

print("Failed to load tweets: \(error!.localizedDescription)")
print(error?.localizedFailureReason)

и получите эту ошибку:

Failed to load tweets: Request failed: forbidden (403)
Optional("Twitter API error : Unable to verify your credentials (code 99)")

но когда я добавлю эту строку в viewDidLoad на моем TVCЯ возвращаю значение:

print("Twitter.sharedInstance().sessionStore.session()?.userID is \(Twitter.sharedInstance().sessionStore.session()?.userID)")

E сть Fabric запись в моем Info.plist, Я не изменял и не манипулировал им с Fabric.app монтаж.

В моем AppDelegate.swift didFinishLoadingWithOptions:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // I tried using the consumerKey/consumerSecret for Fabric & Twitter for S's & G's to no avail
    Twitter.sharedInstance().startWithConsumerKey("myConsumerKey", consumerSecret: "myConsumerSecret")
    Fabric.with([Twitter.self()])
    return true
}

Я проверил контрольный список настроек Twitter в Fabric: я сделал все, но я, очевидно, что-то испортил. Пример кода с веб-сайта Fabric не работает для меня "из коробки". Есть мысли по поводу: где искать проблему? У меня нет идей.

2 ответа

Решение

Когда вы запрашиваете твиты, я представляю, что ваш код выглядит следующим образом, правильно?

let client = TWTRAPIClient()
let dataSource = TWTRUserTimelineDataSource(screenName: "fabric", APIClient: client)

Оказывается, их документация неполная, она должна выглядеть

let userID = Twitter.sharedInstance().sessionStore.session()?.userID
let client = TWTRAPIClient(userID: userID)
let dataSource = TWTRUserTimelineDataSource(screenName: "fabric", APIClient: client)

Клиентский объект нуждается в вашей пользовательской информации, чтобы сделать свое дело. Я была такая же проблема.

Еще одно изменение... Это больше не APIClient, теперь это apiClient

let userID = Twitter.sharedInstance().sessionStore.session()?.userID
let client = TWTRAPIClient(userID: userID)
let dataSource = TWTRUserTimelineDataSource(screenName: "fabric", apiClient: client)
Другие вопросы по тегам