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