我已经通过Fabric.app在一个项目中安装了Twitter SDK。我能够登录到我的Twitter帐户,但是当我做任何与请求tweet相关的事情时,我抛出了这些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)")
但是当我将这行添加到TVC
上的viewDidLoad
时,我返回一个值:
print("Twitter.sharedInstance().sessionStore.session()?.userID is (Twitter.sharedInstance().sessionStore.session()?.userID)")
在我的Info.plist
中有一个Fabric
条目。我没有从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
}
我浏览了Fabric的Twitter设置清单re: setup,我已经做了所有的事情,但我显然搞砸了一些东西。来自Fabric网站的示例代码对我来说并不"开箱即用"。有什么想法吗:在哪里寻找问题?我没主意了。
当您请求tweet时,我想象您的代码看起来像下面这样,对吗?
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)