如何使用 Facebook SDK 3.1 使用弹出视图登录 Facebook,而不是通过 safari? [关闭]
Posted
技术标签:
【中文标题】如何使用 Facebook SDK 3.1 使用弹出视图登录 Facebook,而不是通过 safari? [关闭]【英文标题】:How to login facebook with pop up view, not through safari, using Facebook SDK 3.1? [closed] 【发布时间】:2013-01-10 03:34:34 【问题描述】:请帮我解答这个问题!我想创建应用登录facebook,如果设备安装了Facebook应用,我的应用会在用户登录Facebook时调用Facebook应用,如果没有安装Facebook应用,我的应用会弹出登录视图,没有sarafi?
【问题讨论】:
类似链接:***.com/questions/14214903/… 你明白了吗? bcz 我找到了.. 【参考方案1】:如果您使用共享工具包,请转到 SDK 中的 facebook.m 类找到此方法:
- (void)authorize:(NSArray *)permissions
delegate:(id<FBSessionDelegate>)delegate
然后替换你的最后一行是:[self authorizeWithFBAppAuth:YES safariAuth:YES];
使用此行:[self authorizeWithFBAppAuth:YES safariAuth:NO;
& 检查。
【讨论】:
对不起..我使用的是 SDK facebook 3.1,不是旧的 SDK,我找不到 facebook.m,我只找到 file.h..?? “共享工具包”,你是什么意思?对不起,我是新人! 然后试试上面链接中@Paras joshi 告诉的方法... 是的,实际上我根据旧的共享工具包实现给出了答案...【参考方案2】:这将处理打开一个 facebook 会话。
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
if (status == FBSessionStateOpen || status == FBSessionStateOpenTokenExtended)
NSLog(@"Logged in!");
];
确保您的应用代理也处理回调 url。
- (BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url
return [FBSession.activeSession handleOpenURL:url];
【讨论】:
在哪里使用这个[FBSession openActiveSessionWithReadPermissions:nil
部分.. 我正在使用 Facebook SDK SessionLoginSample 部分...
Kris Jurgowski:你能给我一个“NSLog(@"Logged in!")”的示例代码吗……在这里,我无法编写任何东西……谢谢!
这是一种打印出你的名字的方法:'[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary如果您使用的是 Facebook SDK,您可以使用 FBSession 打开会话。
- (void)openSessionWithAllowLoginUI:(BOOL)allowLoginUI
// NSLog(@"openSessionWithAllowLoginUI:");
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_photos",
@"publish_actions",
@"read_stream",
@"friends_photos",
@"email" ,
nil];//You can add similar permissions according to your app.
[FBSession setActiveSession:[[FBSession alloc] initWithPermissions:permissions]];
[[FBSession activeSession] openWithBehavior:FBSessionLoginBehaviorForcingWebView
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error)
NSLog(@" state=%d",state);
// handle the completion handler...
];
如果您的手机中安装了 Facebook 应用程序,这将打开该应用程序,如果您未登录,它将显示弹出窗口。如果您的设备中未安装本机应用程序,它将使用 safari。
在对 Facebook 执行任何操作之前,请始终使用以下命令检查 FBSession 是否打开且处于活动状态:if (FBSession.activeSession.isOpen)
【讨论】:
以上是关于如何使用 Facebook SDK 3.1 使用弹出视图登录 Facebook,而不是通过 safari? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何从 facebook ios sdk 3.1 中提取 facebook 电子邮件?
如何使用 FB SDK 3.1 和 iOS<6 预览 facebook 状态更新?
使用 Facebook for iOS SDK 3.1 如何发布到朋友的时间线避免不推荐使用的标题