1

PFUser.currentUser資格情報がまだ有効かどうかを確認するコードを AppDelegate.m に書きたいと思います。私がこれを行っている理由は、このシナリオのためです。ユーザーが正常にログインし、currentUser がそのユーザーの基本情報を取得したとします。ユーザーがある時点でパスワードを変更した場合、アプリケーションの起動時に、それらの資格情報が最新かどうかを確認する必要があります。電子メールとパスワードが表のものと一致しない場合、ユーザーをログアウトする必要があります。

私はこれをやろうとしましたが、ログインに使用される電子メールの実際の値を持っているPFUser.currentUser.password間、明らかに常にnullに設定されPFUser.currentUser.emailています.パスワードにアクセスできないようにするにはどうすればよいですか?

ガイダンス用のコードは次のとおりです。

PFQuery *query = [PFQuery queryWithClassName:@"User"];
[query whereKey:@"objectId" equalTo: PFUser.currentUser.objectId];
[query whereKey:@"password" equalTo: PFUser.currentUser.password];
[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {

        if (!object) {
            /*Credentials changed! Logout user and request login again*/
            NSLog(@"Credentials Changed!");
            [PFUser logOut];
            [[[navigationController viewControllers] objectAtIndex:0] performSegueWithIdentifier:@"loginSegue" sender:self];
        } 
        else {
            /*Credentials are still valid..proceed!*/
            NSLog(@"Credentials Correct!");
            [[[navigationController viewControllers] objectAtIndex:0] performSegueWithIdentifier:@"skipLoginSegue" sender:self];
        }
    }];

これが失敗したとき、パスワードを NSLog しようとしたところ null になったので、これが問題であることがわかりました。

4

2 に答える 2

2

マスター キーを使用してクラウド コード関数を記述します。Parse.Cloud.useMasterKey();

これを関数に含めると、ユーザーのパスワードにアクセス/確認して、「検証済み」変数またはそのようなものを送り返すことができます。

ユーザーを変更するためのクラウド コード関数を次に示しますが、ユーザーの情報を確認するために簡単に変更できます。これに関する解析フォーラムには多くの回答があり、ドキュメントには多くの情報があります。

Parse.Cloud.define("editUser", function(request, response) {
  //var GameScore = Parse.Object.extend("SchoolHappening");
  // Create a new instance of that class.
  //var gameScore = new GameScore();
Parse.Cloud.useMasterKey();

  var query = new Parse.Query(Parse.User);
query.get(request.params.myUser, {
  success: function(myUser) {
    // The object was retrieved successfully.
    myUser.set("cabinetPosition", request.params.myPosition);
    // Save the user.
      myUser.save(null, {
        success: function(myUser) {
          // The user was saved successfully.
          response.success("Successfully updated user.");
        },
        error: function(gameScore, error) {
          // The save failed.
          // error is a Parse.Error with an error code and description.
          response.error("Could not save changes to user.");
        }
      });

  },
  error: function(object, error) {
    // The object was not retrieved successfully.
    // error is a Parse.Error with an error code and description.
  }
});

});
于 2014-08-14T16:27:34.087 に答える