我正在将facebook登录集成到我的应用程序中。
当我向用户请求权限时,默认UI会显示给他以接受权限,然后当他点击“okay”时,它将从ui返回到我的应用程序以继续。
然而,默认的权限UI在浏览器中保持打开状态(如果我退出应用程序并打开浏览器,我仍然会看到之前提交给他的权限UI。 有没有办法在用户授权后我可以在浏览器中关闭页面?
希望我很清楚
这是我正在使用的代码:
此方法将向用户显示Facebook登录页面以获得他的许可
-(BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_location",
@"user_birthday",
nil];
return [FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:allowLoginUI
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
[self HandleLogin];
}];
}
然后如果登录和许可成功
- (void)HandleLogin {
if (FBSession.activeSession.isOpen) {
[FBRequestConnection
startForMeWithCompletionHandler:^(FBRequestConnection *connection,
id<FBGraphUser> user,
NSError *error) {
//DO SOMETHING WITH THE USER INFO
}];
}
}
处理Facebook应用程序返回的代码
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
// attempt to extract a token from the url
return [FBSession.activeSession handleOpenURL:url];
}
答案 0 :(得分:0)
Facebook SDK很有问题,我会说。就个人而言,我很不高兴将FB图片共享集成到几个项目中(而他们的开发人员发布了几个新的SDK)。我不知道,为什么浏览器重定向变得流行,老实说,我不喜欢它。一般来说,我不认为有可能以某种方式从浏览器中清除这些不需要的内容,而无需从应用程序中打开新的URL,因为它不是解决方案。我建议强制 FB SDK使用 WebView 。在我使用的最新版本中,当您使用自定义行为创建新会话时,会设置此项。代码应该像这样或非常类似:
[[FBSession activeSession] openWithBehavior:FBSessionLoginBehaviorForcingWebView
completionHandler:^(FBSession *session, FBSessionState status, NSError *error)handler]