Facebook 完全权限 AccessToken 替代离线访问令牌
Posted
技术标签:
【中文标题】Facebook 完全权限 AccessToken 替代离线访问令牌【英文标题】:Facebook full permission AccessToken alternative to Offline access token 【发布时间】:2013-02-17 17:13:08 【问题描述】:目前我正在使用桌面 Windows 服务来下载我的 Facebook 页面见解/页面喜欢/朋友等图表数据。因此,为此我在我的 facebook 页面上添加了应用程序并生成了完全权限的离线访问令牌。所以,我正在使用它从去年正确下载我的 Facebook 页面见解。 但是,由于 Facebook 弃用了离线访问令牌。 请任何人都可以帮助我如何生成具有完全权限的访问令牌以在不登录的情况下下载我的页面洞察数据(无需任何用户/用户界面对话框(允许等))。
现在,我正在尝试通过一些 api 来生成访问令牌,如下所示:- https://graph.facebook.com/oauth/access_token?client_id=xxxx&client_secret=xxxxx&grant_type=client_credentials
但是,使用上面的调用我得到访问令牌(短长度令牌)-例如:-
123484913842345|jkioEjsRAhFrNdertg9zuxPiopl
使用上述访问令牌在尝试查看图形数据时出现以下错误:-
"error": "message": "Unsupported get request.","type": "GraphMethodException","code": 100
但是,我发现这个访问令牌没有完整的权限并且寿命也很短。
当我使用旧的离线访问令牌时,它会正确响应。 (此令牌将在一段时间后关闭)。因此,要生成具有大约 60 天寿命的相同类型的访问令牌。 请帮助我。我如何生成具有完整权限且长度为 110 个字符的访问令牌。 另外,我正在使用 Windows 服务,所以任何人都可以帮助解决如何在不登录的情况下生成访问令牌(用户/UI 活动)
【问题讨论】:
【参考方案1】:要解决此问题,您需要 extend 短期令牌。
您也可以在没有任何用户交互的情况下debug访问令牌,以查看扩展访问令牌的操作是否有效。
这个link是一个很好的关于离线访问过期的参考。
当您使用此 url 调试访问令牌时:
https://graph.facebook.com/debug_token?input_token=INPUT_TOKEN&access_token=ACCESS_TOKEN
INPUT_TOKEN 是用户访问令牌
ACCESS_TOKEN 是应用访问令牌,格式如下:APP_ID|APP_SECRET
为了澄清这一点,如果我的应用程序 ID 是 123
并且应用程序密码是 abc
那么应用程序访问令牌是 123|abc
【讨论】:
感谢您的回复。它对我有用。根据您的回复确定访问令牌到期时间等:-我正在使用以下 API:-graph.facebook.com/…。任何人都可以帮我解决我们需要传递的参数(input_token 和 access_token)。实际上现在我只有一个访问令牌。但是,在 API 中 - 我们需要传递 - input_token 和 access_token。请帮助我:-我需要为这两个传递哪些参数。【参考方案2】:简单的解决方案只需使用 php SDK 调用以下函数
$facebook->setExtendedAccessToken();
然后通过
获得扩展访问令牌$access_token = $facebook->getAccessToken();
或
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id=app-id&
client_secret=app-secret&
fb_exchange_token=short-lived-token
【讨论】:
这个问题与 PHP 无关。以上是关于Facebook 完全权限 AccessToken 替代离线访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
Cordova Facebook 登录仅返回 accessToken
Grails spring-security-facebook 插件的 accessToken
检查 accesstoken 是不是过期 Facebook SDK 4.7 ios