2017-03-22 24 views
1

ユーザー名、パスワード、アクセストークンを保存するためにキーチェーンを使用します。私はkeychainItem.hkeyChainItem.mを実装しましたhereを追加しました。そして、これは私がやったことです:iOS:キーチェーンを使用してuserName、パスワード、アクセストークンを保存

1 - 私はこのようにそれをインスタンスviewDidLoadで、その後myViewController.h内のプロパティキーチェーンを作成しました:

self.keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"Login" accessGroup:nil]; 

私はユーザ名、パスワード、アクセストークンを得たとき、これはあります私が何をしたか:

2 - 私はそれをテストするときのuserName

[self.keychain setObject:userName forKey:(__bridge id)kSecAttrAccount]; 

を格納するには、それが動作します。

ここで、パスワードとアクセストークンを追加します。

私は、アプリケーションのクラッシュ、それを実行すると、私は

[self.keychain setObject:accessToken forKey:(__bridge id)kSecAttrAccessible]; 

をしようとしたアクセストークンの

:私は、私は値を設定し、別のキーチェーン

self.keychainToken = [[KeychainItemWrapper alloc] initWithIdentifier:@“Token” accessGroup:nil]; 

を作成しようとしました

Assertion failure in -[KeychainItemWrapper writeToKeychain] KeychainItemWrapper.m:322 
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't update the Keychain Item.' 

[self.keychainToken setObject:accessToken forKey:(__bridge id)kSecValueData]; 

しかし、私は同じエラーが発生しました。

私は何をしましたか?キーチェーンを使用してユーザー、パスワード、およびアクセストークンを保存するにはどうすればよいですか?

答えて

1

あなたはこのようにそれを使用することができますパスワードについて

self.keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"Login" accessGroup:nil]; 

[self.keychain setObject:userName forKey:(id)kSecAttrAccount]; 
[self.keychain setObject:password forKey:(__bridge id)(kSecValueData)]; 
[self.keychain setObject:accessToken forKey:(id)kSecAttrTokenID]; 
[self.keychain setObject:@"LoginService" forKey: (id)kSecAttrService]; 
+0

そして、何を? –

+0

私はaccessTokenのためにkSecValueDataを使用すると正しく動作します。しかし、どのようにパスワードを保存することができますか? –

+0

@Llg:更新された回答を参照してください。 – Poles

関連する問題