1

これがアプリのユーザーセッションを実装する適切な方法であるかどうか、誰かが私に知らせてくれませんか:

ログインしているユーザーにのみ特定の機能を提供し、ログインしていないユーザーに他の種類の機能 (読み取り機能と書き込み機能など) を提供する iOS アプリがある場合、次のアーキテクチャは意味があります。 ..

1) loggedIn などのグローバル BOOL 変数を作成したいと考えています。この変数は、アプリ ユーザーが「Authenticated-User-Only」リストの下にある機能の 1 つを実行したいときにいつでもチェックできます。この BOOL を格納する場所を知りたいです。グローバルブール値を格納するための NSUserDefaults のベストプラクティスはありますか?

2) Facebook iOS SDK を実装しようとしています。そのため、FB で SSO から戻り、FB ユーザーがアプリを確認したときに、それを使用してグローバル BOOL のログインを設定し、アプリ全体で使用できますか?

前もって感謝します。

ノート -

これはすべてクライアント側で、アプリ内でネイティブに行われます。レジストリはサーバーにクエリを実行して、ユーザーが有効かどうかを返します。

4

2 に答える 2

3

マットの答えは、既存の SDK にぴったりです。3.0 リビジョンに関するいくつかの考えを追加します (現在はベータ版で、すぐに運用ブランチに移行されます)。

Derek さん、あなたが説明しているシナリオは一般的なものであり、SDK でそのケースを非常に簡単に処理できるようにしたかったのです。3.0 ではFBSession、セッションを処理するために導入されました。の 1 つのインスタンスがFBSession、1 人のユーザーをログインからログアウトまで処理します。

ほとんどのアプリケーションには 1 人のユーザーしかいません。そのためactiveSession、アクティブなセッションを開くための静的ヘルパー メソッドと共に、 という静的メソッドも追加しました。(注: アクティブなセッションはシングルトンではありません。アプリケーションの実行中のさまざまな時点で、別のインスタンスがFBSessionアクティブなセッションになる可能性があるためです。)

認証を使用するアプリケーションは、オプションで Facebook ログインを使用する条件をサポートする必要がある場合に、一般的に次のことを実行できるのと同じくらい簡単である必要があります。

if (FBSession.activeSession.isOpen) {
    // perform an operation using the open FBSession.activeSession object
}

SDK の BooleanOG サンプル アプリケーションは、このパターンの例を示しています。このパターンでは、アプリケーションのアクションもオープン グラフの投稿になりますが、Facebook との現在アクティブなセッションがある場合のみです。サンプル内の関連するコード行へのリンクは次のとおりです: BOGFirstViewController.m

お役に立てれば!

于 2012-07-19T14:16:54.787 に答える
2

グローバルな BOOL を使用することもできますが、それはより多くの作業を行う必要があります。

代わりにisSessionValid、Facebook iOS SDK によって提供されるメソッドを使用して、ユーザーのセッションが有効かどうかを確認できます。

これを行うには、このチェックを実行する必要があるクラスで次のことを行うだけです。

YOURAPPDELEGATE *delegate = (YOURAPPDELEGATE*)[[UIApplication sharedApplication] delegate]; 

if ([appDelegate.facebook isSessionValid]) {  //Session is valid, facebook is the name of the instance of Facebook that is set in your app delegate, providing that's where you do the login handling, as per the tutorial on Facebook's developer site 
    DO STUFF
}
else { //Session is NOT valid
    DO OTHER STUFF
}
于 2012-07-19T03:03:22.350 に答える