我在iOS项目中使用FBConnect来授权用户(SSO)。
登录后,我有时需要打开Webview以显示用户特定的对话框,例如应用请求对话框(邀请到应用),甚至可以在webview中打开朋友的个人资料页面,供我的应用用户浏览
问题是Webview无法识别登录用户并要求他再次登录,这不是很友好。
如何与webview分享登录的身份验证密钥/ cookie /内容?
答案 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。
祝你好运!