【问题标题】:Facebook authorisation: Handeling cancellationFacebook 授权:处理取消
【发布时间】:2012-11-04 06:36:52
【问题描述】:

我正在构建一个使用 facebook 授权服务的应用程序。但是,我在两种情况下遇到了问题

  1. 用户被发送到 facebook 应用程序以获取权限。相反,她按下主页按钮并再次打开我的应用程序。 在这种情况下,我需要做两件事: 一个。重新向她展示登录页面(并从该页面中删除动画):为此,我需要知道用户在没有登录 fb 的情况下返回了应用程序。 湾。取消发送给 fb 的最后一个请求:如果用户再次尝试登录,我的应用会向 fb 授权系统发送两个请求,这会导致 fb 应用中出现两个弹出窗口,并且还会向我的应用返回多个调用。

  2. 用户按下取消按钮:在这种情况下,fb 应用程序不会重定向到我的应用程序。我读到这是一个错误并已修复;但是,这仍然对我不起作用。有什么建议吗?

我曾尝试在论坛上搜索类似的Q;但是,一直没能找到确切的答案。如果我错过了相关问题,请告诉我。

【问题讨论】:

    标签: facebook ios5 ios6 fbconnect


    【解决方案1】:

    如果您使用的是适用于 iOS 的 Facebook SDK 3.1,那么

    - (void)applicationDidBecomeActive:(UIApplication *)application {
        [FBSession.activeSession handleDidBecomeActive];
    

    }

    如果用户碰巧通过点击主页按钮等操作取消了身份验证流程,将取消身份验证请求。然后,您可以通过再次显示您的登录视图来重置。

    如果您升级到最新的 Facebook iOS 应用程序,应该会解决 (2) 问题。

    【讨论】:

    • 谢谢!什么适用于 sdk 3.0?目前,我正在执行以下操作:如果 FBSession 状态为 FBSessionStateCreatedOpening,则检查 appdelegate 的 applicationdidbecomeactive。如果是,则使用所需的权限集重置 activeSession。此步骤将 FBSession 的状态更改为 FBSessionStateClosedLoginFailed 并调用完成处理程序(因为状态已更改)。检查完成处理程序中的 FBSessionStateClosedLoginFailed 状态并相应地重置接口。但是,这看起来更像是一种 hack,我很乐意使用更好的方法。
    • 有什么理由不想迁移到 3.1?然后你可以依靠非hacky的方式。
    • 我最终会迁移到 3.1,只是,我已经编写了所有代码,没有足够的时间进行更改。
    • 对于 3.0,试试这个: - (void)applicationDidBecomeActive:(UIApplication *)application { // 这意味着用户在没有完成登录 Safari/Facebook 应用程序的情况下切换回了这个应用程序 if (FBSession. activeSession.state == FBSessionStateCreatedOpening) { [FBSession.activeSession close]; // 所以我们关闭会话并重新开始 } }
    猜你喜欢
    • 1970-01-01
    • 2013-09-16
    • 2012-01-10
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多