2

これまで、次の構文を使用して UserName とパスワードでログイン資格情報を確認しました。

logInWithUsernameInBackground

 [PFUser logInWithUsernameInBackground:[UsernameField.text lowercaseString] password:PasswordField.text block:^(PFUser* user, NSError* error){

しかし今、私の要件は次のとおりです。

ユーザーは email と UserName のいずれかでログインする必要があります

そして、ユーザー名/電子メールとパスワードで確認する必要があります

これはどのように達成できますか?

4

2 に答える 2

16
PFQuery *query = [PFUser query];
    [query whereKey:@"email" equalTo:UsernameField.text];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
        if (objects.count > 0) {

            PFObject *object = [objects objectAtIndex:0];
            NSString *username = [object objectForKey:@"username"];
            [PFUser logInWithUsernameInBackground:username password:PasswordField.text block:^(PFUser* user, NSError* error){
            }];
        }else{
            [PFUser logInWithUsernameInBackground: UsernameField.text password:PasswordField.text block:^(PFUser* user, NSError* error){
            }];

        }


    }];
于 2013-09-03T14:45:21.203 に答える
0

スイフト 3 / 4

Metin Say の回答が Swift に変換されました。

static func signIn(username: String, password: String, onSuccess: @escaping ([PFObject]) -> (), onError: @escaping (String) -> ()) {
        let query = PFQuery(className: "User")
        query.whereKey("email", equalTo: username)
        query.findObjectsInBackground(onSuccess: { (objects) in
            if (objects.count > 0) {
                guard let object = objects.first as? PFUser, let username = object.username else{
                    return
                }
                PFUser.logInWithUsername(inBackground: username, password: password) { (user, error) in
                    if let error = error {
                        onError(error.localizedDescription)
                    } else {
                        onSuccess(objects)
                    }
                }
            }
            else{
                PFUser.logInWithUsername(inBackground: username, password: password) { (user, error) in
                    if let error = error {
                        onError(error.localizedDescription)
                    } else {
                        onSuccess(objects)
                    }
                }
            }
        }, onError(error.localizedDescription))
    }
于 2018-10-10T14:28:55.337 に答える