0

iOSアプリ開発時のユーザー認証について質問です。ユーザーがアプリケーションを起動すると、有効なユーザー名とパスワードの入力を求めるホーム画面が表示されます。資格情報が検証されると、アプリケーションの残りの部分にアクセスできるようになります。この検証操作を作成する方法がわかりません。アプリケーションの視覚的な部分を作成する方法は知っていますが、それ以上のことはわかりません。つまり、機能するためにユーザーからの資格情報を必要とするアプリケーションを作成するにはどうすればよいでしょうか?

4

2 に答える 2

1

まず、Apple は、認証なしでは何か有用なことを実行できない場合、アプリを拒否します。次に、ユーザーからの入力を収集します。次に、認証のためにサーバーへの NSURLConnection を起動し、応答を観察して、それに応じて行動する必要があります。

于 2012-05-23T13:57:10.930 に答える
0

サーバーで検証していることを考慮して、サーバーの設定方法によって異なります。これは、私NSURLConnectionが自分のアプリで行う方法です(パラメーターに合わせて調整されています):

+ (NSDictionary *)executeCallWithRequest:(NSMutableURLRequest *)request {
  NSHTTPURLResponse *response = nil;
  NSError *error = nil;
  NSData *jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
  NSString *dataString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  error = nil;
  NSDictionary *result = jsonData ? [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error] : nil;
  if (error == nil && response.statusCode == 200) {
    NSLog(@"%i", response.statusCode);
  } else {
    NSLog(@"%@", dataString);
    NSLog(@"%@", [error localizedDescription]);
  }
  return result;
}

+ (NSDictionary *)executePostWithRequest:(NSMutableURLRequest *)request {
  request.HTTPMethod = @"POST";
  return [self executeCallWithRequest:request];
}

+ (NSDictionary *)loginUserWithCredentials:(NSDictionary *)userCredentials {
  NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@", YOUR_URL]];
  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

  NSString *requestFields = [NSString stringWithString:@""];
  for (NSString *key in [userCredentials allKeys]) {
    requestFields = [requestFields stringByAppendingFormat:@"(param name)&", key, [userCredentials objectForKey:key]];
  }

  //removes the trailing &
  requestFields = [requestFields substringToIndex:requestFields.length - 1];
  requestFields = [requestFields stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  NSData *requestData = [requestFields dataUsingEncoding:NSUTF8StringEncoding];
  request.HTTPBody = requestData;

  return [self executePostWithRequest:request];
}

私の場合、JSON でエンコードされた配列で応答します。

于 2012-05-23T14:09:06.660 に答える