5

Appleが提供するKeychainラッパークラスを使用しています。私のアプリケーションでは、ログインしたユーザーのユーザー名とパスワードを保存して取得したいと思います。アプリを再度起動すると、キーチェーン内のログインクレデンシャルを確認し、ユーザーをアプリにアクセスさせる必要があります(自動ログイン)。いくつかのサンプルコードを試しました。何もうまくいきませんでした。これを行う手順を手伝ってください。

ありがとう。

4

4 に答える 4

16

PDKeyChainBindingを使用する

使用方法は次のとおりです。

PDKeychainBindings *bindings = [PDKeychainBindings sharedKeychainBindings];
[bindings setObject:@"myuser" forKey:@"username"];
[bindings setObject:@"kmypass" forKey:@"password"];

//How to retrieve
NSString *username = [bindings objectForKey:@"username"];
NSString *password = [bindings objectForKey:@"password"];
于 2013-02-26T11:17:47.327 に答える
6

キーチェーン アクセスを使用して、資格情報をより安全に保存できます。そのためには、以下のガイドとサンプルに従ってください。

1)Keychain Services Programming Guide

Apple によるこのドキュメントで、必要なものはすべて見つかりました。

2)GenericKeychain

Apple によるこのサンプル コードは、キーチェーン値を追加、削除、および更新する方法を示しています。

これに問題がある場合はお知らせください。これがあなたのお役に立てば幸いです。

于 2013-02-26T11:17:53.803 に答える
1
#import "SFHFKeychainUtils.h"
#define KEYCHAIN_SERVICE_KEY   @"MyKey"
#define KEYCHAIN_ID @"agsfs46edt3g3jd38jh3g3g3g3g38f3dkiuytr453"
#define KEYCHAIN_PSD @"a1s2s3d4edt3g3jd38jh3g3g3g3g38f3dfgffgdd"

//チェックする

NSError *error = nil;
    NSString *password = [SFHFKeychainUtils getPasswordForUsername:KEYCHAIN_ID andServiceName:KEYCHAIN_SERVICE_KEY error:&error];

    if ([password isEqualToString:KEYCHAIN_PSD])
        return YES;

//保存する

NSError *error = nil;
        [SFHFKeychainUtils storeUsername:KEYCHAIN_ID  andPassword:KEYCHAIN_PSD forServiceName:KEYCHAIN_SERVICE_KEY updateExisting:YES error:&error];
于 2013-02-26T10:40:01.727 に答える
0

ACSimpleKeychainを見てください。キーチェーンの単純な抽象化を提供して、パスワードを安全に簡単に保存できるようにします。

たとえば、ユーザー名とパスワードを保存するには:

if ([keychain storeUsername:@"user1" password:@"password" identifier:@"account1" forService:@"twitter"])
{
    NSLog(@"SAVED credentials for username 'user1' credentials identifier 'account1'");
}

パスワードの取得:

NSDictionary *credentials = [keychain credentialsForUsername:@"user1" service:@"twitter"];
NSLog(@"CREDENTIALS: service: %@, identifier: %@, username: %@, password: %@",
    [credentials valueForKey:ACKeychainService],
    [credentials valueForKey:ACKeychainIdentifier],
    [credentials valueForKey:ACKeychainUsername],
    [credentials valueForKey:ACKeychainPassword]);
于 2013-02-26T10:53:49.983 に答える