2016-11-29 32 views
6

Tôi đang viết ứng dụng với Swift 3 trên iOS 10. sharedInstance() phương thức ném lỗi vào bàn điều khiển khi người dùng từ chối quyền truy cập tài khoản từ hệ thống hoặc tài khoản không được định cấu hình (vd: "Không thể xác thực bằng tài khoản hệ thống "). Lỗi được hiển thị trên bảng điều khiển trước khi nhập để đóng. Tôi sẽ không hiển thị lỗi này cho người dùng trong ứng dụng, ví dụ: tình trạng báo động. Đây là mã của tôi:Nhận lỗi từ Twitter.sharedInstance() Swift 3 iOS 10

Twitter.sharedInstance().logIn { (session, error) in 
       if error != nil { 
       // print(error?.localizedDescription ?? " ") 
        return 
       }) 

tôi nhận được lỗi này:

2016-11-29 14:49:09.023 CarReview[1254:31719] [TwitterKit] did encounter error with message "Unable to authenticate using the system account.": Error Domain=TWTRLogInErrorDomain Code=2 "User allowed permission to system accounts but there were none set up." UserInfo={NSLocalizedDescription=User allowed permission to system accounts but there were none set up.} 
2016-11-29 14:49:09.024 CarReview[1254:31719] [TwitterKit] No matching scheme found. 
2016-11-29 14:49:09.292 CarReview[1254:31719] [TwitterKit] did encounter error with message "Error obtaining user auth token.": Error Domain=TWTRLogInErrorDomain Code=-1 "<?xml version="1.0" encoding="UTF-8"?> 
<hash> 
    <error>Desktop applications only support the oauth_callback value 'oob'</error> 
    <request>/oauth/request_token</request> 
</hash> 
" UserInfo={NSLocalizedDescription=<?xml version="1.0" encoding="UTF-8"?> 
<hash> 
    <error>Desktop applications only support the oauth_callback value 'oob'</error> 
    <request>/oauth/request_token</request> 
</hash> 
} 

Tôi muốn chương trình người sử dụng này:. "Không thể xác thực bằng cách sử dụng tài khoản hệ thống tài khoản cho phép cho phép các tài khoản hệ thống nhưng có được không thiết lập lên."

Trả lời

0

Tôi không chắc tôi hiểu những gì bạn muốn làm nhưng có thể bạn muốn in kết quả trên các chủ đề chính:

Twitter.sharedInstance().logIn{(session, error) in 
    DispatchQueue.main.async{ 
     if error != nil { 
      print("Failed to login with Twitter/error:", error!.localizedDescription) 
     }else{ 
      print("succeeded") 
     } 
    } 
} 
+0

Không phải những gì tôi muốn nói. Lỗi hiển thị trên bảng điều khiển trước khi đóng cuộc gọi và tôi không có ảnh hưởng đến điều này. Tôi sẽ không hiển thị lỗi này cho người dùng. Lỗi trên bảng điều khiển hiển thị chính nó. –

+0

Nếu bạn không muốn nó được in trên bảng điều khiển trước khi đóng, bạn cần phải thêm DispatchQueue.main.async giống như trong câu trả lời của tôi. –

+0

Tuy nhiên tôi không có quyền kiểm soát với lỗi, tôi đã nhận lỗi để điều khiển nhưng nó không phải là chức năng in của tôi. –

0

OK, tôi sử dụng mã này để thông báo cho người dùng về một số lỗi:

if SLComposeViewController.isAvailable(forServiceType: SLServiceTypeTwitter) { 
      if ACAccountStore().accountType(withAccountTypeIdentifier: ACAccountTypeIdentifierTwitter).accessGranted { 

       Twitter.sharedInstance().logIn{ 
        (session, error) in 
        if error != nil { 
         self.showAlert(title: "Twitter - Error", message: (error?.localizedDescription)!) 
         return 
        } 

        guard let token = session?.authToken else { return } 
        guard let secret = session?.authTokenSecret else { return } 

        let credential = FIRTwitterAuthProvider.credential(withToken: token, secret: secret) 
        FIRAuth.auth()?.signIn(with: credential, completion: { (user, error) in 
         if error != nil { 
          self.showAlert(title: "Firebase (Twitter)", message: (error?.localizedDescription)!) 
          return 
         } 

         self.showAlert(title: "Firebase (Twitter)", message: "Logged to Firebase via Twitter.") 
        }) 
       } 
      } else { 
       showAlert(title: "Twitter - Error", message: "Give access to the system Twitter account.") 
      } 
     } else { 
      showAlert(title: "Twitter - Error", message: "No system accounts set up.") 
     } 

Nhưng nó không phải là những gì tôi muốn:/

0

Bạn cần phải sử dụng withMethods và chỉ định sử dụng systemAccounts, không webbased hoặc tất cả để sử dụng cài đặt iOS Twitter. Các mã sau đây là trong Swift 3:

twitSharedInstance.logIn(withMethods: .systemAccounts) { (session :TWTRSession?, error :Error?) in 
     if (error != nil) { 
      if (session != nil) { 
       //We have logged into Twitter. 
      } 
     } 
    } 
0

tôi sẽ cố gắng đoán rằng câu hỏi của bạn thực sự là:

"Tôi có những sai sót trong giao diện điều khiển, nhưng gọi lại không được gọi, vì vậy tôi có thể' Tôi phải làm gì với điều này? "

Bạn gặp phải các lỗi này vì consumerKeyconsumerSecret của bạn không được đặt trong Info.plist. Bạn cần phải đúng cách install Twitter SDK

Đây là những gì được viết trong các ý kiến ​​để logIn(completion:)

@warning This method requires that you have set up your consumerKey and consumerSecret .

bạn Info.plist nên có một cái gì đó như thế này (chú ý đến <key>consumerKey</key><key>consumerSecret</key> dây):

<key>Fabric</key> <dict> 
    <key>APIKey</key> 
    <string> YOUR API KEY </string> 
    <key>Kits</key> 
    <array> 
     <dict> 
      <key>KitInfo</key> 
      <dict> 
       <key>consumerKey</key> 
       <string> YOU PROBABLY MISSED YOUR CONSUMER KEY </string> 
       <key>consumerSecret</key> 
       <string> YOU PROBABLY MISSED YOUR CONSUMER SECRET </string> 
      </dict> 
      <key>KitName</key> 
      <string>Twitter</string> 
     </dict> 
    </array> 
</dict> 
10

Tôi đang đối mặt với cùng một vấn đề như trong câu hỏi. Tôi vừa đặt Url gọi lại thành Ứng dụng Twitter và giải quyết các sự cố.

Đi tới https://apps.twitter.com/app -> Cài đặt -> URL gọi lại và Cập nhật cài đặt để lưu.

+2

Tôi cần nhập thông tin gì vào url gọi lại? – user3033437

+1

Bất kỳ URL hợp lệ nào bạn có thể thêm. –

Các vấn đề liên quan