首页 文章

使用TwitterKit / Fabric身份验证失败获取单个推文

提问于
浏览
0

我正在尝试检索一条推文并通过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有关的问题?

2 回答

  • 0

    您必须在尝试使用它之前初始化Fabric,这正是您在示例代码中所做的 .

    对于初始化,请按照the Fabric documentation site中的说明进行操作 . 实质上,您已将以下行添加到您的应用程序委托(除了导入TwitterKit):

    Twitter.sharedInstance().startWithConsumerKey("your_key", consumerSecret: "your_secret")
    Fabric.with([Twitter.sharedInstance()])
    

    然后从fabric.io复制并粘贴您的消费者密钥和密钥 . Fabric应该为您自动生成这些 .

  • 1

    我使用与"Add login button button"选项相同的菜单中的选项"View tweet in application"内置的Fabric应用程序解决了这个问题 . 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 返回 false 并发生身份验证错误 . 我找不到 validSession 究竟是什么,但它可能比较两组不同的键或类似的东西 .

相关问题