2017-07-11 1 views
0

Ich versuche PFUser mit Twitter Login zu erstellen.PFUser logInWithAuthTypeInBackground (Fehler: Twitter Authentifizierung fehlt)

Ich bekomme unten Fehler, während ich versuche, diese Methode aufzurufen.

https://github.com/parse-community/Parse-SDK-iOS-OSX

version: swift: 2.3, xcode: 8.2.1, parse:1.15.0, twitterKit: 2.8.1, TwitterCore: 2.8.0

Twitter.sharedInstance().logInWithCompletion { (session, error) -> Void in 
    if let session = session { 
    PFUser.registerAuthenticationDelegate(self, forAuthType: "twitter") 

    let params: [String: String] = [ 
     "id": (session.userID)!, 
     "screen_name": (session.userName)!, 
     "auth_token": (session.authToken)!, 
     "auth_token_secret": (session.authTokenSecret)!, 
     "consumer_key": Twitter.sharedInstance().authConfig.consumerKey, 
     "consumer_secret": Twitter.sharedInstance().authConfig.consumerSecret 
    ] 

    PFUser.logInWithAuthTypeInBackground("twitter", authData: params).continueWithBlock { task -> AnyObject? in 
     print(task.error) //[Error]: Twitter auth configuration missing (Code: 1, Version: 1.15.0) 

     return task.completed 
    } 
} 

Twitter auth configuration missing (Code: 1, Version: 1.15.0)

+0

Was ist der Fehler, den Sie bekommen? – iehrlich

+0

Vielen Dank für die Antwort! Ich bekomme diesen Fehler [Fehler]: Twitter Authentifizierung fehlt (Code: 1, Version: 1.15.0) – getty

+0

@iehrlich Bitte überprüfen Sie !! – getty

Antwort

0

Hier ist ein Beispiel-View-Controller von dem, was Sie erreichen wollen. Ich stieß auf Probleme mit dem Block "Twitter.sharedInstance.loginWithCompletion ({})".

import Fabric 
import TwitterKit 
import Parse 
import Firebase 


class LoginViewController: UIViewController { 



    var window: UIWindow? 
    var user: User? 


     // MARK: Login logic 
    override func viewDidLoad() { 

     let logInButton = TWTRLogInButton(logInCompletion: { session, error in 

      if let unwrappedSession = session { 

       let parseuser = PFUser() 

       let usersName = unwrappedSession.userName 
       let usersID = unwrappedSession.userID 
       let profileImage = UIImage(named: "userProfileImage") 

       parseuser.username = usersName 
       parseuser.password = usersID 
       parseuser.email = "[email protected]" 


       // set currentUser profile image as 'parseuser["profileImage"]' 
       let image = UIImage(named: "userProfileImage") 
       let imageData = UIImagePNGRepresentation(image!) as Data! 
       let file = PFFile(name: "profileImage.png", data: imageData! as Data) 
       parseuser["profileImage"] = file 


       parseuser.signUpInBackground(block: { (result, error) -> Void in 

        if error == nil && result == true { 
         //var userObjectID = 
         self.user = User(userObjectID: parseuser.objectId!, userID: usersID, userName: usersName, email: parseuser.email!, profileImage: profileImage!) 
         self.saveUser() 
         // user successfully added 
         print ("Object saved") 
         self.goToApp() 
        } else { 
         //TODO: Check error message and display reason to user 
        } 

       }) 
      } 
      if (session != nil) { 
       let authToken = session?.authToken 
       let authTokenSecret = session?.authTokenSecret 

       let credential = FIRTwitterAuthProvider.credential(withToken: authToken!, secret: authTokenSecret!) 

       FIRAuth.auth()?.signIn(with: credential, completion: { (user, error) in 
        if (error != nil) { 
         print(error) 
         return 
        } 
        print("Twitter login successful..") 

       }) 
      } else { 
       if (error != nil) { 
        print(error) 
       } 
      } 

     }) 
     logInButton.center = self.view.center 
     self.view.addSubview(logInButton) 

THEN, in ur AppDelegate

import Firebase 
import Fabric 
import TwitterCore 
import TwitterKit 
import Parse 

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     // Override point for customization after application launch. 
     Parse.enableLocalDatastore() 


     let parseConfiguration = ParseClientConfiguration(block: { (ParseMutableClientConfiguration) -> Void in 
      ParseMutableClientConfiguration.applicationId = "com.your.identifier" 
      ParseMutableClientConfiguration.clientKey = "your-client-key" 
      ParseMutableClientConfiguration.server = "https://your-url.herokuapp.com/parse" 
     }) 

     Parse.initialize(with: parseConfiguration) 


     Twitter.sharedInstance().start(withConsumerKey: "your-consumer-key", 
             consumerSecret: "your-consumer-secret") 
     Fabric.with([Twitter.self]) 
     FIRApp.configure() 

Dies ist nicht bei den Importen/etc optimiert. aber das wird funktionieren. Sie müssen ein Firebase-Konto einrichten und die Google-Service-Info.plist-Datei in Ihre Projektstruktur einfügen sowie einen Fabric-Schlüssel erhalten und ihn in Ihre info.plist-Datei einfügen, aber Sie können Beispiele dafür finden, wie zu online. Nur eine Lösung.

Verwandte Themen