1

こんにちは、解析サーバーにデータを保存するための iOS 同期コンポーネントに取り組んでいます。解析 Web エンドからクラスを作成し、クラスに TicketDetail という名前を付け、データを含むいくつかのフィールドを追加しましたが、AFNetworking を使用してアプリからクラスにアクセスしようとするとリンクhttps://api.parse.com/1/を使用した GET 要求も、AFHTTPRequestOperation を使用してヘッダー フィールドとして AppID とクライアント キーを渡します。リクエストを行う前に、以下のコードを使用して、ユーザーが parse.com に登録されているかどうかを確認しています

    [PFUser logInWithUsernameInBackground:username password:password
                                    block:^(PFUser *user, NSError *error) {
                                        if (user) {
                                            // Do stuff after successful login.
                                            NSLog(@"%@",user);
                                            NSLog(@"%@",user.email);
                                            NSLog(@"%@",user.username);
                                            [[AFSyncEngine sharedInstance] startSync];

                                        } else {
                                            NSLog(@"The login failed. Check error to see why");
                                            UIAlertView *_alert = [[UIAlertView alloc]initWithTitle:@"Unauthorised User" message:@"Would you like to SignUp" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"SignUp", nil];
                                            _alert.tag=89;
                                            [_alert show];
                                            };
                                    }];

ユーザーが承認されていない場合は、以下のコードを使用してユーザーにサインアップします

PFUser *newUser = [PFUser user];
[newUser setUsername:self.userNameFld.text];
[newUser setEmail:self.emailIdFld.text];
[newUser setPassword:self.passwordFld.text];
[newUser signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (succeeded) {
        NSLog(@"Registered");
        [[[UIAlertView alloc]initWithTitle:@"SignUp" message:@"Successfull" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]show];
    }
    else {
        NSLog(@"%@",error);
    }
}];

ユーザーが登録されてログインしようとすると、これが解析サーバーから得られる応答です

2015-03-09 14:44:49.742 MyDetails[2360:1369317] エラー
ドメイン = com.alamofire.error.serialization.response コード =-1011 「要求が失敗しました: 承認されていません (401)」 UserInfo=0x7fbf585c0f40 {com.alamofire.serialization .response.error.response=
{ URL: https://api.parse.com/1/classes/TicketDetail } { ステータス コード: 401、
ヘッダー { "Access-Control-Allow-Methods" = " "; "Access-Control-Allow-Origin" = ""; Connection = "keep-alive"; "Content-Length" = 25; "Content-Type" = "application/json; charset=utf-8"; Date = "Mon, 09 Mar 2015 09:14:47 GMT"; Server = "nginx/1.6.0"; "Www-Authenticate" = "Basic realm=\"Parse\""; "X-Parse-Platform" = G1; "X-Runtime" = "0.000162"; } }, NSErrorFailingURLKey= https://api.parse.com/1/classes/TicketDetail , com.alamofire.serialization.response.error .data=<7b226572 726f7222 3a22756e 61757468 6f72697a 6564227d 0a>、NSLocalizedDescription=リクエストが失敗しました: 承認されていません (401)}

誰かが parse.com と AFNetworking で働いていたら、私を助けてください

4

1 に答える 1

2

AFNetworking では、https 要求のセキュリティ ポリシーを追加する必要があります。

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
securityPolicy.allowInvalidCertificates = YES;
self.securityPolicy = securityPolicy;
self.requestSerializer = [AFJSONRequestSerializer serializer];
self.responseSerializer = [AFJSONResponseSerializer serializer];
于 2015-03-09T09:59:50.577 に答える