【问题标题】:Facebook Session ClosedFacebook 会话关闭
【发布时间】:2014-01-09 11:01:54
【问题描述】:

我正在我的 iOS 应用中实现 Facebook 登录。我认为它实施得很好,但是我有一个问题。我在应用程序的设置中运行登录。当我离开应用程序,然后当我回来时,如果我想使用 Facebook 操作(即分享照片),我无法这样做,因为会话已关闭。当我进入有登录按钮的设置菜单时,会话重新打开而不再次执行登录(只需将我引导到登录按钮所在的视图并再次打开会话)。

所以,我需要活动会话,而不需要用户(总是)进入设置菜单。有什么建议吗?

谢谢

【问题讨论】:

  • 你做得怎么样,因为在我的访问令牌有效之前它从来没有问过我
  • 对不起,我不明白。你可以重复吗?谢谢

标签: ios facebook session facebook-login


【解决方案1】:

我遇到了同样的问题:

不得不做

@property (strong, nonatomic) FBSession *session;

在 AppDelegate 中

  • (void)applicationDidBecomeActive:(UIApplication *)application { [FBAppEvents 激活应用程序]; [FBAppCall handleDidBecomeActiveWithSession:self.session]; }

  • (void)applicationWillTerminate:(UIApplication *)application { [self.session close]; }

  • (BOOL)应用程序:(UIApplication *)应用程序 openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication 注释:(id)注释{ 返回 [FBAppCall 句柄OpenURL:url 源应用程序:源应用程序 withSession:self.session]; }

在你的设置类中

如果(appDelegate.session.isOpen) {

        [FBSession setActiveSession:appDelegate.session];
        [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection,

NSDictionary *user, NSError *error) { [self registerationWithFBRequestConnection:connection and FBGraphUser:user and NSError:error]; }];

    }
    else
    {
        [appDelegate.session closeAndClearTokenInformation];
        NSArray *permissions = [NSArray arrayWithObjects:@"email", nil];
        appDelegate.session = [[FBSession alloc] initWithPermissions:permissions];
        [FBSession setActiveSession:appDelegate.session];

        [appDelegate.session openWithBehavior:(FBSessionLoginBehaviorWithFallbackToWebView)

completionHandler:^(FBSession *session, FBSessionState 状态, NSError *错误) { [self sessionStateChangedWithFBSession:session andFBSessionState:status and NSError:error]; }];

    }
  • (void)sessionStateChangedWithFBSession:(FBSession*)session and FBSessionState:(FBSessionState)status andNSError:(NSError*) error { 开关(状态) { 案例 FBSessionStateOpen: { [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary *user, NSError *error) {

             [self registerationWithFBRequestConnection:connection andFBGraphUser:user andNSError:error];
         }]; }
        break;
    case FBSessionStateClosed:
    
        break;
    case FBSessionStateClosedLoginFailed:
    
        break;
    default:
        break;
    

    }} 在你的registerationWithFBRequestConnection: 方法中你应该处理它。在设置中获取有关用户的所有信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多