【问题标题】:facebook offline_accessfacebook 离线访问
【发布时间】:2012-07-16 19:02:16
【问题描述】:

ma web 应用程序使用offline_access。因为它会在五月的第一天被弃用,所以我想知道如何管理 access_token 的有效性。 在文档https://developers.facebook.com/roadmap/offline-access-removal/ 他们说(如果 access_token 是从服务器端 OAuth 调用生成的,则生成的 access_token 将具有更长的到期时间)! 这是什么“更长的过期时间”?以及我如何知道我的令牌不再有效?

任何人都可以帮助我吗? 谢谢!

【问题讨论】:

    标签: facebook


    【解决方案1】:

    从您在问题中链接到的页面,较长的到期时间为 60 天:

    要获取 access_token,只需传递您自己的 client_id(您的 app_id), 您的 app_secret 和客户端 access_token 到端点 以下。返回的 access_token 将设置为在 60 天后过期。如果 您想续订仍然有效的 access_token,您必须 首先获取一个新的客户端访问令牌,然后调用相同的 下面的端点。返回的带有新扩展的 access_token 到期时间可能与之前授予的相同,也可能不同 扩展 access_token。

    还有here is how to handle expired access tokens

    【讨论】:

    • 我需要知道如何处理过期时间而不要求用户再次登录?例如,如果我的用户在 4 月 30 日拥有访问令牌。五月一日,他无需重新登录就可以使用我的应用程序?如果我在五月一日之前检查“弃用离线访问”,任何人都知道会发生什么?谢谢
    • 只要用户在令牌到期之前使用您的应用程序,您就可以更新/交换令牌。令牌每天只能更新一次。如果用户离开您的应用超过 60 天,则该用户需要重新登录您的应用。
    • 感谢您的回答。实际上,我将 access_token 存储在数据库中,并且因为我曾经使用 offline_access,所以我从未检查过令牌的有效性。那么我应该将过期日期存储在日期库中吗?并在令牌不再有效时重定向我的用户....?
    • 每当用户使用您的应用程序时,您都应该将访问令牌换成新的,该令牌将始终在 60 天后过期。获得新令牌后,将新令牌存储在数据库中。如果您等到令牌过期后才这样做,用户将需要再次登录。
    【解决方案2】:

    Facebook 很高兴将其删除。真的搞砸了我们的很多工作!现在您是否认为运行一个可以调用新端点的小型 Windows/unix 服务说每 30 天使用正确的值会“解决”这个问题。看起来用户不必亲自在您的网站上,因为终点是:

    https://graph.facebook.com/oauth/access_token?             
        client_id=APP_ID&
        client_secret=APP_SECRET&
        grant_type=fb_exchange_token&
        fb_exchange_token=EXISTING_ACCESS_TOKEN
    

    因为您只是调用 URL 并解析详细信息?因此,当有人连接到您的应用程序时,获取新的扩展访问令牌,将其与过期日期一起保存到您的数据库中,并通过正确的设置,每 30 天(如果您想继续游戏,甚至 59 天)调用一次 URL边缘...)并更新它,而用户无需亲临您的网站。似乎太容易避开安全...?

    【讨论】:

    • 我不会推荐这个。这样做将违反 Facebook 的服务条款。 OAuth 规范明确要求短期访问令牌,而创建服务以无限期刷新这些令牌违反了这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多