我试图通过Twitter登录创建PFUser。
我试图调用此方法时遇到错误。
https://github.com/parse-community/Parse-SDK-iOS-OSX
版本:swift:2.3,xcode:8.2.1,解析: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身份验证配置(代码:1,版本:1.15.0)
答案 0 :(得分:0)
这是一个示例视图控制器,您正在尝试实现的目标。我使用“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@placeholder.com"
// 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)
那么,在你的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()
这在进口/等方面没有优化。但这会奏效。您需要设置一个firebase帐户,并将Google-Service-Info.plist文件放在您的项目结构中,并获取一个结构密钥并将其放在您的info.plist文件中,但您可以找到如何示例 - 在线。只是一个解决方案。