4

プログラムで設定されたパスワードとメールアドレスを使用して、Facebookとストーリーを共有できる必要があるアプリを作成しています(Facebook-Connectを使用しないでください。主に、Twitterにログインするか、Twitterにログインするかにかかわらず、自分のデザインが必要なためです。アプリからのFacebook)。

私はすでにTwitterとXAuthでこれを行っていますが、それは素晴らしい働きをします。Facebook、または通常のOAuthで同じことを達成できる方法はありますか?(または、FacebookはXAuthをサポートしていますか?それはそれをはるかに簡単にしますか?)
私が望むことを達成することができる他の方法はありますか?

4

4 に答える 4

5

理論は、アプリがユーザーのパスワードを決して見ないようにすることです。

実際には、コードはすべてアプリで実行されるため、ユーザーのパスワードを取得するのは簡単です(そして、ユーザーのパスワードを取得するために同様の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と独自の設定画面を使用することをお勧めしません—どちらかを選択することになっています。
于 2010-09-29T00:13:38.967 に答える
2

FacebookのようにOAuthを使用しているサイトの場合、ユーザーのセキュリティを回避しようとしています。OAuthの簡単な説明については、次のリンクを確認してください。http: //bit.ly/awynlU短いバージョンでは、Facebookがユーザーの認証を担当し、サーバー上で認証を行います。tcが述べたように、理論はあなたがパスワードを見ることは決してないということです。

良い、悪い、または無関心で、あなたがやりたいことは妨げられるはずです。それが可能であれば、サイトが設定したセキュリティモデル(この場合はFacebook)に違反しています。

ちなみに、TwitterもOAuthに向かっています。私が持っている情報によると、「8月31日以降、すべてのアプリケーションは「OAuth」を使用してTwitterアカウントにアクセスする必要があります。」

于 2010-10-01T19:10:15.143 に答える
1

どうしてそんなハックなアプローチで行きたいのかしら。ユーザーは、OAuth2トークンを取得するために1回ログインするだけで済み、そこから、ユーザーにFacebookでログインするように要求することなく、Facebookに何度でも投稿できます。

于 2010-10-08T07:32:39.717 に答える
1

新しいFacebookSDKを使用して、Facebookシングルサインオンを実装できるはずです。このように、ユーザーがすでにFacebookアプリをデバイスにインストールしている場合は、既にサインインしており、古い接続ポップアップの実装よりもはるかに優れたエクスペリエンスです。アプリがアカウントにアクセスするには許可を与える必要がありますが、それ以外は醜いサインイン画面は使用されません。

Facebookアプリがインストールされていない場合は、ブラウザに保存されます。

どちらの方法も、URL処理を使用して、認証されるとアプリに戻ります。

詳細については、http://developers.facebook.com/docs/mobile/ios/build/#implementssoをご覧ください。

代わりに独自のログイン画面をネイティブに実装するという点では、これはFacebookのTOSに反します。これは、一般的なフィッシングの問題などを回避するために、一貫性のある使い慣れたサインインプラットフォームを必要としているためです。彼らは、正当なページにのみユーザー名とパスワードを提供するようにユーザーを教育することを強く求めています。 。

于 2012-01-24T23:48:06.813 に答える