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

And*_*ena 5 facebook

这个网址上,Facebook解释了如何使用Facebook Connect进行身份验证.

基本上,步骤如下:

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

    https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

Facebook将使用access_token回复最后的HTTP帖子.精细.


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

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

来自Facebook oficial网站:

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

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

我该怎么办?

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

小智 2

您需要使用“offline_access”权限。这使得令牌能够长期存在。请参阅权限页面:http://developers.facebook.com/docs/authentication/permissions/

  • `offline_access` 权限已被弃用,并将于 2012 年 5 月的某个时间删除。 (5认同)