FBConnectlogin,与webview共享?

我在我的iOS项目中使用FBConnect授权用户(SSO)。

login后,我有时需要打开Webview才能显示用户特定的对话框,例如应用程序请求对话框(邀请到应用程序),甚至在web视图中打开朋友的个人资料页面供我的应用程序用户浏览。

问题是,Webview不能识别login的用户,并要求他再次login,这不是很友好。

任何想法如何与webview共享login的身份validation密钥/ cookie /东西?

你可能会遇到这种情况。 真令人沮丧。

Facebook iOS SDK不存储访问Cookie

如果需要,可以强制iOS库使用您的应用程序进行login,并通过本地应用程序的UIWebview进行授权。 您因此login,并使用Cookie。 你必须添加一个方法到现有的Facebook对象。 通常,你打电话给:

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

授权,然后调用私有方法:

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

两个参数都设置为YES。

你想添加一个公共的方法,调用相同的私人function,但两个参数设置为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]; } 

我将这两个BOOL参数设置为NO,并popup一个本地的UIWebView,留下了我的应用程序的cookie。

FBConnect会为您返回一个令牌,以便您可以访问FB API而不是FB网站。 不幸的是,这不会通过UIWebViewlogin他们,并设置正确的FB Cookie。

另一个策略是改变FBConnect源代码,redirect到你自己的UIWebView,而不是标准的FBpopup到FB-APP进程,让他们只login一次。 你将不得不坚持UIWebView的cookie状态。

我build议你也看看http://www.getsocialize.com ,它可以帮助你pipe理社交networking集成。

祝你好运!