FBConnect登录,与webview分享?

Mos*_*ano 4 facebook objective-c facebook-graph-api ios

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

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

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

有任何想法如何与webview共享登录的身份验证密钥/ cookie /东西?

gif*_*iff 5

你很可能遇到这种情况.真的很令人沮丧.

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.