簡體   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