2011-07-22 19 views
3

私のアプリでは最新のfacebook ios sdkを使用しています。 SSOを実現するためには、Facebookは言う:次のようにiphone用facebook ios sdkを使用してシングルサインオン(SSO)を実装する方法

は、アプリケーションのメインAppDelegateクラスを変更します。この方法では

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 

は、urlパラメータに渡すことを確認して、アプリケーションのFacebookのオブジェクトのhandleOpenURLメソッドを呼び出します。

私のクエリは次のとおりです。

  1. 上記の方法を使用することは何ですか?なぜそれを呼び出すのですか? 私がfacebookデモアプリケーションのメソッドを隠すと、それは常にログインページにリダイレクトされます。このメソッドを再表示すると、他のボタンオプション(右)でログアウトするようにリダイレクトされます

  2. このメソッドはApplicationDelegate.mファイルで定義されていますので、ここでfacebookオブジェクトを呼び出す必要があります。私のフェイスブックオブジェクトは、階層の4倍のビューコントローラクラスで定義されているので、このメソッドのfacebookオブジェクトをどのように参照できますか。

注:私はのDemoAppを試してみました。 ViewControllerファイルで宣言されたfacebookオブジェクトのAppDelegate.mファイルのインスピレーションで、彼らがどのようにしてfacebookオブジェクトを参照したのか分かりません。

答えて

6

このメソッドは、アプリケーションが渡されたURLを「処理」するかどうかを判断するために使用されます。たとえば、アプリケーションで特定のURLの「スキーム」を処理し、実行時に特定のURLを処理するかどうかを選択できます。 NOを返すと、同じURLスキームも処理できる他のアプリケーションに移動します。 Facebook iOS SDKの場合は、アプリケーションがURLスキームを処理する唯一のアプリケーションになります。

Facebookにログインしようとすると、SDKは値をFacebookアプリケーションまたはFacebook Webサイトのいずれかに渡し、認証プロセスを完了できるようにコールバックURLを含みます。このデリゲートでこのメソッドがなければ、そのコールバックは正しく動作しません。

のOAuthの詳細については、以下を参照してください。

http://developers.facebook.com/docs/authentication/

第二には、これはただのFacebook SDKよりも大きな問題です。これは、コアアーキテクチャ上の問題と関係しています。アプリケーションデリゲートにFacebookオブジェクトを含めることができますし、ビューコントローラでそれを参照します。これが最も簡単な方法です。ビューコントローラの中で、あなただけの次の操作を行うことができます:

Facebook *facebook = [(YourAppDelegate *)[UIApplication sharedApplication] delegate] facebook]; 

このオプションは、常に理想的ではない、それは共有インスタンスたくさんのアプリデリゲートにゴミ捨て場になりますので。

もう1つの選択肢は、アプリケーションオブジェクトを作成するときにビューオブジェクトをビューコントローラに渡すようにすることです(ビューコントローラにはFacebookオブジェクトのプロパティがあり、その後アプリケーションデリゲートはビューコントローラに渡します)。その中に)。

Objection iOSフレームワークなどのクラスのインスタンスを共有するための他のオプションもありますが、これらはさらに高度です。

関連する問題