如何使用 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 *user, NSError *error) if (!error) NSLog (@"%@", user.name) ];' 我想显示弹出的 webview 以登录 facebook...可以吗?谢谢!【参考方案3】:

如果您使用的是 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 如何发布到朋友的时间线避免不推荐使用的标题

如何在 facebook iOS SDK 3.1 中发布到朋友的墙上?

使用 facebook sdk 3.1 创建事件

使用 ios facebook SDK 3.1 在墙上发布