FBConnect登录,与webview分享?

时间:2012-03-22 09:55:32

标签: objective-c ios facebook facebook-graph-api

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

登录后,我有时需要打开Webview以显示用户特定的对话框,例如应用请求对话框(邀请到应用),甚至可以在webview中打开朋友的个人资料页面,供我的应用用户浏览

问题是Webview无法识别登录用户并要求他再次登录,这不是很友好。

如何与webview分享登录的身份验证密钥/ cookie /内容?

2 个答案:

答案 0 :(得分:5)

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

Facebook iOS SDK not storing cookies for access

如果需要,您可以强制iOS库使用您的应用程序进行登录,并通过您应用的本地UIWebview进行授权。您已登录,并使用cookie。您必须向现有Facebook对象添加方法。通常,您致电:

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

进行授权,进而调用私有方法:

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

将两个参数设置为YES。

您想要添加一个调用相同私有函数但两个参数都设置为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调用,并且库弹出一个本地UIWebView,它为我留下了适用于该应用程序的cookie。

答案 1 :(得分:0)

FBConnect返回一个令牌,以便您可以访问FB API而不是FB网站。不幸的是,这不会通过UIWebView登录并设置正确的FB cookie。

另一个策略是更改FBConnect源代码以重定向到您自己的UIWebView而不是标准FB弹出到FB-APP进程并让它们只登录一次。但是,您必须保持UIWebView的cookie状态。

我建议你也看一下可以帮助你管理社交网络集成的http://www.getsocialize.com

祝你好运!