2012-03-22 5 views
4

iOSプロジェクトでFBConnectを使用して、ユーザー(SSO)を認証しています。FBConnectログイン、webviewで共有しますか?

ログインすると、アプリリクエストダイアログ(アプリに招待)などのユーザー固有のダイアログを表示したり、アプリのユーザーのウェブビューで友だちのプロフィールページを開くことができます。ブラウズ。

問題は、Webviewがログインしたユーザーを認識せず、再度ログインするように求めていることです。これはあまり面白くありません。

ログインした認証キー/クッキー/何かをwebviewと共有する方法はありますか?

答えて

5

あなたはこのような状況に陥っている可能性があります。それは本当にイライラしています。

Facebook iOS SDK not storing cookies for access

あなたは、あなたがしたい場合は、ログインのためにアプリを使用するiOSのライブラリを強制し、あなたのアプリケーションへのローカルのUIWebViewて許可することができます。こうしてあなたはログインし、使用するクッキーを持っています。既存のFacebookオブジェクトにメソッドを追加する必要があります。通常は、呼び出し:

- (void) authorize:(NSArray *)permissions 
      delegate:(id<FBSessionDelegate>)delegate 

を認可するために、ターンでプライベートメソッドを呼び出している:YESに設定され、両方のパラメータを持つ

- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth 
        safariAuth:(BOOL)trySafariAuth 

を。

同じプライベート関数を呼び出すが、両方のパラメータをNOに設定したパブリックメソッドを追加したいとします。私はFacebook.mに、このメソッドを追加し、Facebook.hでそれを宣言したので、私はそれを呼び出すことができますが、私が好き:

- (void)authorize:(NSArray *)permissions 
     tryFBApp:(BOOL) tryFBApp 
    trySafariAuth:(BOOL) trySafariAuth 
     delegate:(id<FBSessionDelegate>)delegate { 

    [_permissions release]; 
    _permissions = [permissions retain]; 

    _sessionDelegate = delegate; 

    [self authorizeWithFBAppAuth:tryFBApp safariAuth:trySafariAuth]; 
} 

私は地元のNOに設定された2つのBOOLパラメータ、およびライブラリポップアップしていることを呼び出しますUIWebViewは、アプリケーションのために働くクッキーを私に残す。

+0

私のiOSアプリの認証キーはまだ得られますか?またはwebviewsのためにのみ?また、webviewのようにユーザーにログインするように聞こえるように聞こえますか?全体のポイントは、ユーザーにユーザー名とパスワードを入力するのではなく、Facebookブックアプリケーションに依存する新しいfacebookシングルサインオンメソッドを使用することでした。これはSSOをサポートしますか? –

+0

はい、グラフリクエストを行うための有効な認証トークンを取得します。あなたはどこかにサインインする必要があります。そうすれば、クッキーがもう有効でない場合は、ログイン時にログインチャレンジが行われます。認証トークンとCookieを保存したままにして再利用することができます。アクセス許可でオフラインアクセスをリクエストすると、Cookieは長い間有効です。いいえ、これは、FBがディープリンクと呼ぶように、SSOに依存するものとは互換性がありません。毒を選ぶ必要があります。叔母の方法としてFBアプリSSOを使用し、再認証せずにアプリでWebビューを開く方法はありません。 – giff

+0

SSOとの互換性はありません。ユーザは少なくとも1度はあなたのアプリにクレデンシャルを与える必要があります。それのまわりではありません。しかし、私はむしろこれを行い、SSOが利用可能であるという期待を作成するのではなく、すべての認証を1つのチャンクで行うようにします。 – giff

0

FBConnectはトークンを返すので、FBウェブサイトではなくFB APIにアクセスできます。残念ながら、これはUIWebViewを介してログインせず、適切なFB Cookieを設定しません。

もう1つの戦略は、FBConnectのソースコードをFB-APPプロセスへの標準的なFBポップアウトの代わりに独自のUIWebViewにリダイレクトするように変更し、一度だけログインさせることです。ただし、UIWebViewのCookie状態を維持する必要があります。

ソーシャルネットワーク統合の管理に役立つhttp://www.getsocialize.comもご覧ください。

幸運!

関連する問題