2011-02-05 169 views
5

this url,Facebook解释了如何使用Facebook Connect进行身份验证。如何在没有HTTP重定向的情况下获得新的“授权码”?

基本上,步骤如下:

  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 
    

Facebook将回答最后一个带有access_token的HTTP帖子。精细。


的access_token上述接收到期。它将继续有效的秒数与access_token一起返回。好。

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

来自Facebook公报网站:

除了访问令牌(该参数的access_token),响应中包含的秒数,直到令牌过期(在到期参数)。一旦令牌到期,您将需要重新运行上述步骤以生成新代码并访问令牌

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

我该怎么办?

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

+0

我觉得问题应该是 “如何在没有HTTP重定向的情况下获得新的'访问令牌'?” “访问令牌”而不是“授权码” – Carmela 2017-09-18 10:15:48

回答

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/

相关问题