获取 TwitterKit/Fabric 身份验证失败的单个推文
Getting single Tweet with TwitterKit/Fabric authentication failure
我正在尝试检索一条推文并通过 TwitterKit 中提供的 TWTRTweetView
在我的应用程序中显示它。我遵循了 this Fabric guide 并得到了以下代码。
import UIKit
import TwitterKit
class SingleTweetViewController: UIViewController{
@IBOutlet weak var plainView: UIView!
override func viewDidLoad(){
super.viewDidLoad()
Twitter.sharedInstance().logInGuestWithCompletion { session, error in
if let validSession = session {
Twitter.sharedInstance().APIClient.loadTweetWithID("4831830029115392") { tweet, error in
if let t = tweet {
let tweetView = TWTRTweetView(tweet: tweet)
tweetView.showActionButtons = true
self.plainView.addSubview(tweetView)
} else {
println("Failed to load Tweet: \(error?.localizedDescription)")
}
}
} else {
println("Unable to login as guest: \(error.localizedDescription)")
println(error?.localizedFailureReason)
}
}
}
由于身份验证失败,代码生成了这两个错误。
Unable to login as guest: Request failed: forbidden (403)
Optional("Twitter API error : Unable to verify your credentials (code 99)")
值得一提的是,该应用通过this guide后添加的登录按钮成功登录Twitter。有谁知道如何修复此错误?我在这里遗漏了一些代码还是与 Fabric 相关的问题?
您必须在尝试使用 Fabric 之前对其进行初始化,这正是您在示例代码中所做的。
对于初始化,请按照 the Fabric documentation site 中的说明进行操作。本质上,您已经将以下行添加到您的应用程序委托中(除了导入 TwitterKit 之外):
Twitter.sharedInstance().startWithConsumerKey("your_key", consumerSecret: "your_secret")
Fabric.with([Twitter.sharedInstance()])
然后从 fabric.io 复制并粘贴您的消费者密钥和机密。 Fabric 应该会自动为您生成这些。
我使用内置于 "View tweet in application" 选项的 Fabric 应用程序解决了这个问题,该选项位于与 "Add login button button" 选项相同的菜单中。 Fabric 应用程序然后将正确的身份验证密钥插入到 Info.plist
文件中。 Fabric 应用程序提供的代码似乎与 Fabric docs 上给出的代码做同样的事情,但结果因您使用的代码而异。两个代码示例如下所示:
来自 Fabric 文档的代码:
Twitter.sharedInstance().logInGuestWithCompletion { session, error in
if let validSession = session {
Twitter.sharedInstance().APIClient.loadTweetWithID("20") { tweet, error in
if let t = tweet {
self.tweetView.configureWithTweet(t)
} else {
println("Failed to load Tweet: \(error.localizedDescription)")
}
}
} else {
println("Unable to login as guest: \(error.localizedDescription)")
}
}
来自 Fabric 应用程序的代码:
Twitter.sharedInstance().logInGuestWithCompletion { (session, error) in
Twitter.sharedInstance().APIClient.loadTweetWithID("20") { (tweet, error) in
self.view.addSubview(TWTRTweetView(tweet: tweet))
}
}
运行 第一个代码会给出身份验证错误,而第二个代码会毫无问题地加载推文。 if 语句 if let validSession = session
returns a false
并且发生身份验证错误。我找不到 validSession
到底是什么,但它可能比较了两组不同的键或类似的东西。
我正在尝试检索一条推文并通过 TwitterKit 中提供的 TWTRTweetView
在我的应用程序中显示它。我遵循了 this Fabric guide 并得到了以下代码。
import UIKit
import TwitterKit
class SingleTweetViewController: UIViewController{
@IBOutlet weak var plainView: UIView!
override func viewDidLoad(){
super.viewDidLoad()
Twitter.sharedInstance().logInGuestWithCompletion { session, error in
if let validSession = session {
Twitter.sharedInstance().APIClient.loadTweetWithID("4831830029115392") { tweet, error in
if let t = tweet {
let tweetView = TWTRTweetView(tweet: tweet)
tweetView.showActionButtons = true
self.plainView.addSubview(tweetView)
} else {
println("Failed to load Tweet: \(error?.localizedDescription)")
}
}
} else {
println("Unable to login as guest: \(error.localizedDescription)")
println(error?.localizedFailureReason)
}
}
}
由于身份验证失败,代码生成了这两个错误。
Unable to login as guest: Request failed: forbidden (403)
Optional("Twitter API error : Unable to verify your credentials (code 99)")
值得一提的是,该应用通过this guide后添加的登录按钮成功登录Twitter。有谁知道如何修复此错误?我在这里遗漏了一些代码还是与 Fabric 相关的问题?
您必须在尝试使用 Fabric 之前对其进行初始化,这正是您在示例代码中所做的。
对于初始化,请按照 the Fabric documentation site 中的说明进行操作。本质上,您已经将以下行添加到您的应用程序委托中(除了导入 TwitterKit 之外):
Twitter.sharedInstance().startWithConsumerKey("your_key", consumerSecret: "your_secret")
Fabric.with([Twitter.sharedInstance()])
然后从 fabric.io 复制并粘贴您的消费者密钥和机密。 Fabric 应该会自动为您生成这些。
我使用内置于 "View tweet in application" 选项的 Fabric 应用程序解决了这个问题,该选项位于与 "Add login button button" 选项相同的菜单中。 Fabric 应用程序然后将正确的身份验证密钥插入到 Info.plist
文件中。 Fabric 应用程序提供的代码似乎与 Fabric docs 上给出的代码做同样的事情,但结果因您使用的代码而异。两个代码示例如下所示:
来自 Fabric 文档的代码:
Twitter.sharedInstance().logInGuestWithCompletion { session, error in
if let validSession = session {
Twitter.sharedInstance().APIClient.loadTweetWithID("20") { tweet, error in
if let t = tweet {
self.tweetView.configureWithTweet(t)
} else {
println("Failed to load Tweet: \(error.localizedDescription)")
}
}
} else {
println("Unable to login as guest: \(error.localizedDescription)")
}
}
来自 Fabric 应用程序的代码:
Twitter.sharedInstance().logInGuestWithCompletion { (session, error) in
Twitter.sharedInstance().APIClient.loadTweetWithID("20") { (tweet, error) in
self.view.addSubview(TWTRTweetView(tweet: tweet))
}
}
运行 第一个代码会给出身份验证错误,而第二个代码会毫无问题地加载推文。 if 语句 if let validSession = session
returns a false
并且发生身份验证错误。我找不到 validSession
到底是什么,但它可能比较了两组不同的键或类似的东西。