繁体   English   中英

通过TwitterKit / Fabric身份验证失败获取单个Tweet

[英]Getting single Tweet with TwitterKit/Fabric authentication failure

我试图检索单个推文,并通过TWTRTweetView提供的TWTRTweetView将其显示在我的应用程序中。 我遵循了本结构指南 ,并得到了以下代码。

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)")

值得一提的是,该应用通过本指南后添加的登录按钮成功登录了Twitter。 有谁知道如何解决此错误的线索? 我在这里缺少一些代码还是与Fabric相关的问题?

您必须先初始化Fabric,然后才能尝试使用它,这是您在示例代码中所做的。

对于初始化,请遵循Fabric文档站点上的说明 本质上,您已将以下行添加到您的应用程序委托中(除了导入TwitterKit之外):

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

然后复制并粘贴您是fabric.io的使用者密钥和秘密。 Fabric应该自动为您生成这些。

我使用与“添加登录按钮”选项相同的菜单中的“应用程序中的查看推文”选项内置的Fabric应用程序解决了该问题。 然后,Fabric应用程序将正确的身份验证密钥插入Info.plist文件。 Fabric应用程序提供的代码似乎与Fabric文档上提供的代码具有相同的作用,但是结果因所使用的代码而异。 这两个代码示例如下所示:

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 let validSession = session的if语句返回false ,则发生认证错误。 我找不到validSession到底是什么,但是它可能会比较两组不同的键或类似的键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM