3

请帮我解决这个问题!我想创建应用登录 facebook,如果设备安装了 Facebook 应用,我的应用会在用户登录 Facebook 时调用 Facebook 应用,如果没有安装 Facebook 应用,我的应用会显示弹出登录视图,没有 sarafi?

4

3 回答 3

2

如果您使用共享工具包,则转到 SDK 中的 facebook.m 类,找到此方法:

- (void)authorize:(NSArray *)permissions
         delegate:(id<FBSessionDelegate>)delegate

然后替换你的最后一行:[self authorizeWithFBAppAuth:YES safariAuth:YES];

用这一行:[self authorizeWithFBAppAuth:YES safariAuth:NO; &检查。

于 2013-01-10T03:50:56.757 回答
0

这将处理打开一个 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];
}
于 2013-01-10T04:57:02.993 回答
0

如果您使用的是 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)

于 2013-01-10T05:05:33.470 回答