Facebook 如何获得新的';授权代码';没有HTTP重定向?

Facebook 如何获得新的';授权代码';没有HTTP重定向?,facebook,Facebook,在,Facebook解释了如何使用Facebook Connect进行身份验证 基本上,步骤如下: 重定向到facebook作为示例。因此,我将获得一个授权代码 https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream 向以下地址发送HTTP post,请求访问令牌 https://graph.facebook.com/oa

在,Facebook解释了如何使用Facebook Connect进行身份验证

基本上,步骤如下:

  • 重定向到facebook作为示例。因此,我将获得一个授权代码

    https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream
    
  • 向以下地址发送HTTP post,请求访问令牌

    https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE
    
  • Facebook将使用访问令牌回答最后一篇HTTP帖子。好的


    上述接收到的访问\u令牌将过期。它仍然有效的秒数与访问\u令牌一起返回。嗯

    问题是:过期后我该怎么办?

    从Facebook官方网站:

    除了访问令牌(access_token参数)之外,响应还包含令牌过期之前的秒数(expires参数)。一旦令牌过期,您将需要重新运行上述步骤以生成新代码并访问\u令牌

    等等!我无法重新运行上述步骤,因为为了获得新的授权码,我必须重定向(步骤1)。我不想改变方向。我想通过web服务获得新的授权码。用户已经授权了我的应用程序,我将不再有机会重定向他或她

    我该怎么办?


    PS:从逻辑上考虑,我不需要在访问令牌过期后获得新的授权码。一个新的访问令牌就足够了。但是,正如我所展示的,facebook说授权码也会过期。

    您可能希望使用“离线访问”权限。这允许令牌长期存在。请参阅权限页:

    由于他们已经取消了离线访问,Facebook提供了一种延长现有短期代币有效期的方法

    只需提出以下要求:

    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 
    
    而且,关于长寿命访问令牌的到期

    Currently the long-lived user access_token will be valid for 60 days while the 
    short-lived user access_tokens are currently valid from 1 to 2 hours.
    

    有关更多信息,请参阅

    脱机访问权限已弃用,将于2012年5月删除。@SteveTaylor如果脱机访问确实弃用,您知道如何解决此问题吗?我认为问题应该是“如何在没有HTTP重定向的情况下获取新的“访问令牌”“访问令牌”而不是“授权码”