理論は、アプリがユーザーのパスワードを決して見ないようにすることです。
実際には、コードはすべてアプリで実行されるため、ユーザーのパスワードを取得するのは簡単です(そして、ユーザーのパスワードを取得するために同様のUIを表示するのも簡単です)。
完全なソースコードがあるので、ユーザー名とパスワードを使用してログインを行う関数を呼び出すだけで十分簡単です。私はこれをお勧めしません:
- Facebookはおそらくそれを気に入らないでしょうし、アプリのAPIキーを取り消すかもしれません。
- 特にNSUserDefaults(Settings.appが使用する)は完全に暗号化されていないため、絶対に必要な場合を除いて、ユーザー名/パスワードを保存しないでください。
- Setting.appはパスワードフィールドをサポートしていません。
- ユーザーは、アプリを終了し、[設定]に移動し、ログインの詳細を追加して、アプリに戻る必要はありません。「マルチタスク」の方が少し良いですが、それほど良くはありません。
通常のFacebookログイン画面を使用することの何が問題になっていますか?
編集:詳細...
- AFAIK、 Settings.appによって保存されたNSUserDefaultsを確実に暗号化することはできません。これがどのファイルに書き込まれるかを決めることはできません(Library / Preferences / com.example.myapp.plist、私は思います)。iOS 4では、NSFileProtectionKey = NSFileProtectionCompleteを設定できますが、これには多くの問題があります。
- これはアプリ内で設定します。ユーザーは、アプリを実行する前にSettings.appにアクセスできます。
- Library / Preferences/com.example.myapp.plistをアプリのzip/ipaに含めることはおそらく可能ですが、NSFileProtectionKey属性を含めることはできないと思います。
- NSUserDefaultsは、新しいplistを新しいファイルに書き込み、ファイルの名前を古いファイルに変更することで、plistを「アトミックに」更新します。新しいファイルにNSFileProtectionKey=NSFileProtectionCompleteが含まれている可能性はほとんどありません。
- 最終的に、セキュリティを保証しないAPIにデータの制御を渡すと、安全ではなくなります(NSUserDefaultsは、一時ファイルを大量に残す傾向があるようです...)。Appleは、特にパスワードを保存するためのキーチェーンを提供しています(まともなサンプルコードもあります!)。これを使って。
- Appleは、Settings.bundleと独自の設定画面を使用することをお勧めしません—どちらかを選択することになっています。