Ios 在Swift中自定义Twitter解析登录
我想创建自定义视图控制器twitter解析登录。我不想使用Parse提供的默认“loginViewController”字段。我还想从twitter中提取用户的屏幕名称和个人资料图片,并将其保存在Parse中。这是我的密码Ios 在Swift中自定义Twitter解析登录,ios,swift,parse-platform,ios8,Ios,Swift,Parse Platform,Ios8,我想创建自定义视图控制器twitter解析登录。我不想使用Parse提供的默认“loginViewController”字段。我还想从twitter中提取用户的屏幕名称和个人资料图片,并将其保存在Parse中。这是我的密码 //SignInController for custom Parse SignIn import UIKit import Foundation import Parse import ParseUI class SignInController: UIViewContr
//SignInController for custom Parse SignIn
import UIKit
import Foundation
import Parse
import ParseUI
class SignInController: UIViewController {
@IBOutlet weak var fbLogin: UIButton! //Facebook login button
@IBOutlet weak var TwitterLogin: UIButton! //Twitter login button
@IBOutlet weak var username: UITextField!
@IBOutlet weak var password: UITextField!
@IBOutlet weak var SignIn: UIButton! //Custom SignIn button for Parse
@IBOutlet weak var signUp: UIButton! //Custom SignUp button for Parse
var actInd: UIActivityIndicatorView=UIActivityIndicatorView (frame: CGRectMake(0, 0, 150, 150)) as UIActivityIndicatorView
override func viewDidLoad() {
super.viewDidLoad()
//Do additional setup after loading the view.
self.actInd.center=self.view.center
self.actInd.hidesWhenStopped=true
self.actInd.activityIndicatorViewStyle=UIActivityIndicatorViewStyle.Gray
view.addSubview(self.actInd)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose any resourses that can be recreated.
}
@IBAction func FBLoginAction(sender: AnyObject) {
//Facebook login
}
@IBAction func TwitterLoginAction(sender: AnyObject) {
//Here I want to implement twitter login
}
//Custom Parse SignIn
@IBAction func SignInAction(sender: AnyObject) {
var usernamefield=self.username.text
var passwordfield=self.password.text
if (count(usernamefield.utf16)<4 || count(passwordfield.utf16)<5)
{
alert("Invalid", message: "Username must be greater than 4 and password must be greater than 5")
}
else
{
self.actInd.startAnimating()
PFUser.logInWithUsernameInBackground(usernamefield, password: passwordfield, block: { (user, error) -> Void in
self.actInd.stopAnimating()
if((user) != nil)
{
self.alert("Success", message: "Logged In")
}
else
{
self.alert("Error", message: "\(error)")
}
})
}
}
//Create Account or SignUp Controller
class CreatAccount: UIViewController {
@IBOutlet weak var username: UITextField!
@IBOutlet weak var email: UITextField!
@IBOutlet weak var password: UITextField!
@IBOutlet weak var confirmPassword: UITextField!
@IBOutlet weak var signUp: UIButton!
var actInd: UIActivityIndicatorView=UIActivityIndicatorView (frame: CGRectMake(0, 0, 150, 150)) as UIActivityIndicatorView
override func viewDidLoad() {
super.viewDidLoad()
//Do additional setup after loading the view.
self.actInd.center=self.view.center
self.actInd.hidesWhenStopped=true
self.actInd.activityIndicatorViewStyle=UIActivityIndicatorViewStyle.Gray
view.addSubview(self.actInd)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose any resourses that can be recreated.
}
//Custom Parse SignUp
@IBAction func signUpAction(sender: AnyObject) {
var usernamefield=self.username.text
var passwordfield=self.password.text
var emailfield=self.email.text
var confirmpasswordfield=self.confirmPassword.text
if (count(usernamefield.utf16)<4 || count(passwordfield.utf16)<5 || count(confirmpasswordfield.utf16)<5 )
{
alert("Invalid", message: "Username must be greater than 4 and password must be greater than 5")
}
else if(count(emailfield.utf16)<8)
{
alert("Invalid", message: "Please enter a valid email")
}
else if(passwordfield != confirmpasswordfield )
{
alert("Invalid", message: "Passwords mismatch")
}
else
{
self.actInd.startAnimating()
var newUser=PFUser()
newUser.username=usernamefield
newUser.password=passwordfield
newUser.email=emailfield
newUser.signUpInBackgroundWithBlock({ (succeed, error) -> Void in
self.actInd.stopAnimating()
if((error) != nil )
{
self.alert("Invalid", message: "\(error)")
}
else
{
self.alert("Success", message: "Signed Up")
}
})
}
}
//用于自定义解析签名的SignInControl
导入UIKit
进口基金会
导入解析
导入ParseUI
类签名控制器:UIViewController{
@IBOutlet弱var fbLogin:UIButton!//Facebook登录按钮
@IBOutlet弱var TwitterLogin:UIButton!//Twitter登录按钮
@ibvar用户名:UITextField!
@IBOUTLE弱var密码:UITextField!
@IBOutlet弱var-SignIn:UIButton!//用于解析的自定义SignIn按钮
@IBOutlet弱var注册:UIButton!//用于解析的自定义注册按钮
变量actInd:UIActivityIndicatorView=UIActivityIndicatorView(框架:CGRectMake(0,0,150,150))作为UIActivityIndicatorView
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行其他设置。
self.actInd.center=self.view.center
self.actInd.hidesWhenStopped=true
self.actInd.activityIndicatorViewStyle=UIActivityIndicatorViewStyle.Gray
view.addSubview(self.actInd)
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置任何可以重新创建的资源。
}
@iAction函数FBLoginAction(发送方:AnyObject){
//Facebook登录
}
@IBAction函数TwitterLoginAction(发件人:AnyObject){
//这里我想实现twitter登录
}
//自定义解析签名
@iAction函数符号(发送方:AnyObject){
var usernamefield=self.username.text
var passwordfield=self.password.text
如果(count(usernamefield.utf16)这是我的问题的答案。检查TwitterLoginAction
import UIKit
import Foundation
import Parse
import ParseUI
class SignInController: UIViewController
{
@IBOutlet weak var fbLogin: UIButton!
@IBOutlet weak var TwitterLogin: UIButton!
@IBOutlet weak var username: UITextField!
@IBOutlet weak var password: UITextField!
@IBOutlet weak var SignIn: UIButton!
@IBOutlet weak var signUp: UIButton!
var actInd: UIActivityIndicatorView=UIActivityIndicatorView (frame: CGRectMake(0, 0, 150, 150)) as UIActivityIndicatorView
override func viewDidLoad() {
super.viewDidLoad()
//Do additional setup after loading the view.
self.actInd.center=self.view.center
self.actInd.hidesWhenStopped=true
self.actInd.activityIndicatorViewStyle=UIActivityIndicatorViewStyle.Gray
view.addSubview(self.actInd)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose any resourses that can be recreated.
}
@IBAction func FBLoginAction(sender: AnyObject) {
}
@IBAction func TwitterLoginAction(sender: AnyObject) {
PFTwitterUtils.logInWithBlock { (user, error) -> Void in
if (user==nil) {
println(user)
println("Uh oh. The user cancelled the Twitter login.")
return;
} else if ((user?.isNew) != nil) {
println("User signed up and logged in with Twitter!")
} else {
println("User logged in with Twitter!")
}
}
}
//Parse SignIn
@IBAction func SignInAction(sender: AnyObject) {
var usernamefield=self.username.text
var passwordfield=self.password.text
if (count(usernamefield.utf16)<4 || count(passwordfield.utf16)<5)
{
alert("Invalid", message: "Username must be greater than 4 and password must be greater than 5")
}
else
{
self.actInd.startAnimating()
PFUser.logInWithUsernameInBackground(usernamefield, password: passwordfield, block: { (user, error) -> Void in
self.actInd.stopAnimating()
if((user) != nil)
{
self.alert("Success", message: "Logged In")
}
else
{
self.alert("Error", message: "\(error)")
}
})
}
}
}
导入UIKit
进口基金会
导入解析
导入ParseUI
类签名控制器:UIViewController
{
@IBVAR fbLogin:UIButton!
@IBMOutlet弱var TwitterLogin:UIButton!
@ibvar用户名:UITextField!
@IBOUTLE弱var密码:UITextField!
@IBV出口弱var标志:UIButton!
@IBVAR注册:UIButton!
变量actInd:UIActivityIndicatorView=UIActivityIndicatorView(框架:CGRectMake(0,0,150,150))作为UIActivityIndicatorView
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行其他设置。
self.actInd.center=self.view.center
self.actInd.hidesWhenStopped=true
self.actInd.activityIndicatorViewStyle=UIActivityIndicatorViewStyle.Gray
view.addSubview(self.actInd)
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置任何可以重新创建的资源。
}
@iAction函数FBLoginAction(发送方:AnyObject){
}
@IBAction函数TwitterLoginAction(发件人:AnyObject){
PFTwitterUtils.logInWithBlock{(用户,错误)->中的Void
如果(用户==nil){
println(用户)
println(“哦,用户取消了Twitter登录。”)
返回;
}如果((用户?.isNew)!=nil,则为else{
println(“用户注册并使用Twitter登录!”)
}否则{
println(“使用Twitter登录的用户!”)
}
}
}
//解析符号
@iAction func符号(发送方:任意对象){
var usernamefield=self.username.text
var passwordfield=self.password.text
if(count(usernamefield.utf16)这是在Swift 3中登录Twitter的代码
PFTwitterUtils.logIn { (user, error) in
if (user==nil) {
print("Uh oh. The user cancelled the Twitter login.")
} else if ((user?.isNew) != nil) {
print("User signed up and logged in with Twitter!")
} else {
print("User logged in with Twitter!")
}
}
问题是——这段代码在某种程度上不起作用吗?如果是的话,你有什么问题?在解析教程中,你使用默认的twitter登录按钮。该按钮使用PFloginViewController通过解析自动创建twitter登录。我不想使用PFloginViewController。我设计了自己的控制器及其twitter按钮。There是在线示例,显示自定义解析登录而不使用PFloginViewController,但没有在线示例l显示使用默认解析twitter按钮的自定义twitter登录。如果有人不理解,请观看这两个教程。1..2问答,这样做的方法是自己回答自己的问题,即发布一个问题“我如何做X”,然后在下面发布一个答案,说明如何做。请参阅常见问题解答。是的,我回答了,但请不要急于对问题进行评分,因为构建堆栈溢出配置文件需要时间。