【发布时间】:2012-06-05 19:54:10
【问题描述】:
基本问题:我希望我的应用程序能够就授权用户调用 Facebook 图形 API,即使用户不在。
例如,我希望用户 (A) 授权该应用程序,然后我希望用户 (B) 能够使用该应用程序查看有关用户 (A) 的朋友的信息。具体来说:“工作”领域。是的,我正在请求那些扩展权限(user_work_history、friends_work_history 等)。目前,我的应用可以访问已登录用户的好友工作历史记录,但不能访问该应用其他用户的任何好友工作历史记录。
这是我已经知道的:
- 将
offline_access添加到范围参数是旧方法,它 不再工作。 - 新方法是使用“长期”访问令牌, 描述here。这些持续 60 天。
-
我需要交换一个普通的访问令牌来获取新的扩展令牌。 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 获取扩展(又名“长期”)访问令牌?目前,我的代码如下所示:
$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 而不是图形 api,它的工作方式会有什么不同吗?我已经多次阅读 Facebook 文档,但 PHP sdk 没有完整的文档记录,我找不到任何关于它应该如何工作的示例。
【问题讨论】:
-
答案已经在您链接的页面上 - 请再仔细阅读一遍……
-
我想我知道您指的是什么,并且我更新了问题以显示我尝试过的内容(未成功)。如果您在谈论其他事情,请告诉我。
-
如果你使用 SDK,为什么要使用 file_get_contents?只需使用 Facebook::api 向 Graph API 发出请求。
-
原因是我不知道自己在做什么!这就是我发布问题的原因。我很困惑,我看到很多关于如何获取扩展访问令牌的相互矛盾的信息。我认为最安全的做法是完全按照文档进行操作......但它不起作用,我不知道为什么。
-
此外,文档将其称为“新端点”,这让我认为它与 sdk 通常使用的不同。
标签: facebook facebook-graph-api