Mos*_*ano 4 facebook objective-c facebook-graph-api ios
我在我的iOS项目中使用FBConnect来授权用户(SSO).
登录后,我有时需要打开Webview以显示用户特定的对话框,例如应用程序请求对话框(邀请到应用程序),甚至可以在webview中打开朋友的个人资料页面供我的应用程序用户浏览.
问题是Webview无法识别登录用户并要求他再次登录,这不是很友好.
有任何想法如何与webview共享登录的身份验证密钥/ cookie /东西?
你很可能遇到这种情况.真的很令人沮丧.
Facebook iOS SDK不存储用于访问的cookie
如果需要,您可以强制iOS库使用您的应用程序进行登录,并通过您应用的本地UIWebview进行授权.您已登录,并使用cookie.您必须向现有Facebook对象添加方法.通常,你打电话:
- (void) authorize:(NSArray *)permissions
delegate:(id<FBSessionDelegate>)delegate
Run Code Online (Sandbox Code Playgroud)
授权,反过来调用私有方法:
- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
safariAuth:(BOOL)trySafariAuth
Run Code Online (Sandbox Code Playgroud)
两个参数都设置为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];
}
Run Code Online (Sandbox Code Playgroud)
我将两个BOOL参数设置为NO调用,并且库弹出一个本地UIWebView,它为我留下了适用于该应用程序的cookie.