如何在没有HTTP重定向的情况下获取新的“授权代码”?

时间:2011-02-05 18:44:21

标签: facebook

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

基本上,步骤如下:

  1. 重定向到Facebook作为示例。因此,我将获得授权码

    https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream
    
  2. 将HTTP帖子发送到以下地址,要求 access_token

    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
    
  3. Facebook将使用 access_token 回复最后一条HTTP帖子。细


    上面收到的 access_token 过期。它仍然有效的秒数与 access_token 一起返回。好。

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

    来自Facebook oficial网站:

      

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

    等待!我无法重新执行上述步骤,因为为了获得新的授权码,我必须重定向(步骤1)。我不想重定向。我想通过Web服务获取新的授权代码。用户已经授权我的申请,我不会再有机会重定向他或她。

    我该怎么办?

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

2 个答案:

答案 0 :(得分:2)

您可能希望使用“offline_access”权限。这允许令牌长寿。请参阅权限页面:http://developers.facebook.com/docs/authentication/permissions/

答案 1 :(得分:0)

由于他们已经删除了offline_access,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.

有关详细信息,请参阅https://developers.facebook.com/roadmap/offline-access-removal/