Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中自定义Twitter解析登录_Ios_Swift_Parse Platform_Ios8 - Fatal编程技术网

Ios 在Swift中自定义Twitter解析登录

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

我想创建自定义视图控制器twitter解析登录。我不想使用Parse提供的默认“loginViewController”字段。我还想从twitter中提取用户的屏幕名称和个人资料图片,并将其保存在Parse中。这是我的密码

//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”,然后在下面发布一个答案,说明如何做。请参阅常见问题解答。是的,我回答了,但请不要急于对问题进行评分,因为构建堆栈溢出配置文件需要时间。