[解決済み] セキュリティで保護されたWebサービスにもアクセスするiOSアプリで、Facebook認証を行うためのデザイン
質問事項
目標 iOSアプリケーションでFacebook認証を行い、保護されたウェブサービスにアクセスできるようにする。
想定していること Facebookをサインインに使用しないことを選択したユーザーのために、ネイティブな認証(および登録)システムが用意されています。
詳細はこちら
- ユーザーが、当社のシステム用に別のアカウントやクレデンシャルを作成せずに、Facebookでサインインするオプションを提供したいとします。
- 私たちは独自のネイティブ認証メカニズム(ユーザー名とパスワード)をサポートしているため、独自のユーザーIDを持ち、最初のクレデンシャル検証後の後続のインタラクションに使用される認証トークンを発行しています。
Facebookの開発者向けドキュメントに、これに関するベストプラクティスが掲載されていないのは驚きです。既存のドキュメントはすべて、FB authをウェブサイトに組み込むか、認証を必要とするサービスのないスタンドアロンのモバイルアプリを想定しています。
これが正しいかどうか検証してほしい。
- クライアントが Facebook iOS ログインをポップアップします。
- UI ユーザーがFacebookの認証情報でサインインし、アクセストークンを取得する。
- iOSアプリがアクセストークンを弊社サーバーに渡す
-
サーバーはアクセストークンを使ってFBグラフAPIと通信し、(a)トークンを検証し、(b)そのアクセストークンに対するFBユーザーIDを取得する。
例:サーバーは https://graph.facebook.com/me/?access_token=XYZ これはプロファイル情報をJSONオブジェクトで返します。
-
JSONオブジェクトが有効であれば、サーバーはユーザーIDを抽出し、そのユーザーがすでにアカウントを持っているかどうかをチェックします。もしあれば、そのセッションで使用するために、独自の認証チケットをクライアントに発行します。 ユーザーがアカウントを持っていない場合、FacebookのユーザーIDで新しいアカウントを作成し、独自のUserIDを割り当て、認証チケットを発行します。
- クライアントは、認証が必要な後続のインタラクションで認証チケットを引き渡します。
これは私にとって正しいアプローチのように思えますが、何かめちゃくちゃ基本的なことを見逃して、間違った(複雑な)道を進んでいるのかどうか分かりません。
どのように解決するのですか?
私自身、ちょうどこの件に対処したところですが、ここで私が噛みついた部分があります。
ステップ5では... ユーザーがFacebook IDとは全く別のアカウントを登録することは可能ですよね?そして、別の機会にFacebookでログインする......。そして、あなたは彼らに2つ目のアカウントを作成し、1つ目のアカウントを失いました。
ウェブサービスにログインした後、facebookにログインし、facebook IDとローカルアカウントの関連性を把握する方法が必要です。
それを除けば、あなたの計画は堅実だと思います。
更新情報 : Facebookは、そのようなシナリオを概説するドキュメントを追加しました。 こちら
関連
-
XCode のコンパイル例外を解決する clang: error: linker command failed with exit code 1
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] 文字列の長さを取得する
-
[解決済み] Unwind segueは何に使うのか、どう使うのか?
-
[解決済み] このアプリの開発者は、このアプリをFacebookログイン用に正しく設定していないのでは?
-
[解決済み] UILabelで複数行のテキストを表示する
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み】facebook: 永続的なページアクセストークン?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
libc++abi.dylib が NSException 型の捕捉できない例外で終了する理由 エラー
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] UITableViewの下にある余分なセパレータをなくす
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] UITextFieldのテキスト変更イベント
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。