Facebook PHP SDK : getting "long-lived" access token now that "offline_access" is deprecated

标签 facebook facebook-graph-api

基本问题:我希望我的应用能够调用有关授权用户的 Facebook 图形 API,即使用户不在时也是如此。

例如,我希望用户 (A) 授权该应用程序,然后我希望用户 (B) 能够使用该应用程序查看用户 (A) 的好友信息。具体来说:“工作”领域。是的,我正在请求那些扩展权限(user_work_historyfriends_work_history 等)。目前,我的应用程序可以访问已登录用户的 friend 的工作历史记录,但不能访问该应用程序的其他用户的任何 friend 的工作历史记录。

这是我已经知道的:

  • offline_access 添加到范围参数是旧方法,它 不再有效。
  • 新方法是使用“长期”访问 token , 描述 here .这些持续 60 天。
  • 我需要交换一个普通的访问 token 来获取新的扩展 token 。 FB 文档说:

    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

以下是我不知道的内容(希望您能告诉我): 如何使用 Facebook PHP SDK 获取扩展的(也称为“长生命周期”)访问 token ?目前,我的代码如下所示:

$facebook->getAccessToken();

有这样的东西吗?:

$facebook->getExtendedAccessToken();

如果不是,这是我应该做的吗?

$accessToken = $facebook->getAccessToken();
$extendedAccessToken = file_get_contents("https://graph.facebook.com/oauth/access_token?             
    client_id={$appId}&
    client_secret={$secret}&
    grant_type=fb_exchange_token&
    fb_exchange_token={$accessToken}"
    );

我试过了,还是不行。我收到此错误:

Warning: file_get_contents(https://graph.facebook.com/oauth/access_token? client_id=#######& client_secret=#########& grant_type=fb_exchange_token& fb_exchange_token=##########) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /...

如果我切换到 FQL 而不是 graph api,它的工作方式会有什么不同吗?我已多次阅读 Facebook 文档,但 PHP sdk 没有完整的文档,我找不到任何示例说明它应该如何工作。

最佳答案

我终于自己弄明白了。答案很反高潮。似乎新创建的应用程序会自动获得 60 天的访问 token 。我不确定这是否取决于在应用程序设置的“迁移”部分启用“depricate offline_access”设置。为了安全起见,请将其打开。

因此在撰写本文时,您可以按如下方式使用 PHP SDK:$facebook->getAccessToken();

(我的应用未按预期运行的原因与访问 token 过期无关。)

还有一件事,要使用 PHP SDK 获得长期访问 token ,您应该调用 $facebook->setExtendedAccessToken();之前$facebook->getAccessToken();

关于Facebook PHP SDK : getting "long-lived" access token now that "offline_access" is deprecated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10903991/

相关文章:

swift - FBSDKGraphRequest 注册 Parse 用户是 "ambiguous?"

facebook-graph-api - 查询 Facebook Graph API 时如何找出我在最后一页?

javascript - Facebook 图像查看器 Ajax 历史——他们是怎么做到的?

php - 使用 Facebook PHP SDK 在单个请求中检索多个字段

facebook - 如何以编程方式在网站上邀请 Facebook 好友

iphone - 更改墙上照片贴的图标

facebook-graph-api - "Like"使用 Facebook Graph API 的页面, objective-c

facebook - 按名称获取应用程序ID

ios - 从 iOS 应用程序与 Facebook 分享超链接

ios - FBSDKLikeControl 变灰/禁用