【问题标题】:How to get a long life access token, server-side (PHP)? [duplicate]如何获得长期访问令牌,服务器端(PHP)? [复制]
【发布时间】:2012-05-30 21:42:42
【问题描述】:

可能重复:
How to extend access token validity since offline_access deprecation

我尝试为我的应用程序获取长期访问令牌(60 天到期时间)。 但我所有的测试只给了我一个简短的标记。

我在做什么:

  • 首先执行经典的“身份验证”以获得短期访问令牌。 所以网址: GET graph.facebook.com:443/oauth/access_token?redirect_uri={my_callback}&code={the_code_given_by_fb}&client_id={my_client_id}&client_secret={my_client_secret}

=> 给我两个数据 access_token(一个长字符串)和过期(大约 4000 秒)

  • 然后我想将我的短命访问转换为长命访问,所以我尝试调用:

GET graph.facebook.com:443/oauth/access_token?redirect_uri={my_callback}&code={the_code_given_by_fb}&client_id={my_client_id}&client_secret={my_client_secret}&fb_exchange_token={short_life_access_token}&grant_type=fb_exchange_token

=> 这次调用给了我,与第一次调用相同的数据(所以没有长寿命令牌)

我也尝试: GET graph.facebook.com:443/oauth/access_token?client_id={my_client_id}&client_secret={my_client_secret}&fb_exchange_token={short_life_access_token}&grant_type=fb_exchange_token

=> 相同的结果

所以我不明白我们必须做什么才能获得长寿命的访问令牌?

【问题讨论】:

    标签: facebook oauth-2.0 access-token


    【解决方案1】:

    你做得对。您已扩展短期访问令牌。现在将其存储在数据库中并使用它。 60 天后,页面管理员用户必须在这 60 天内再次访问您的应用,才能获得一个带有延长时间的新访问令牌。

    仅供参考offline access removal

    来自文档

        If you pass an access_token that had a long-lived expiration time, the endpoint will  
     simply pass that same access_token back to you without altering or extending the expiration time.
    

    【讨论】:

    • 这很奇怪......所有令牌的过期时间都表明大约 4000 秒?所以没有正确返回过期数据?
    • 您是否在开发者应用的高级设置中启用了“弃用离线访问”?
    • 否,但在启用'deprecate offline_access'后,我在第二次调用后仍有一个短令牌(过期等于4000s)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 2014-08-13
    • 2012-06-04
    • 1970-01-01
    相关资源
    最近更新 更多