eme*_*his 15 facebook facebook-graph-api
基本问题:我希望我的应用程序即使在用户离开时也可以拨打关于授权用户的Facebook图形API.
例如,我希望用户(A)授权应用程序,然后我希望用户(B)能够使用该应用程序查看有关用户(A)的朋友的信息.具体来说:"工作"字段.是的,我请求那些扩展权限(user_work_history,friends_work_history,等).目前,我的应用程序可以访问登录用户的朋友工作历史记录,但不能访问应用程序其他用户的任何朋友的工作历史记录.
这就是我所知道的:
offline_access到scope参数是旧方法,它不再起作用.我需要交换一个普通的访问令牌来获取新的扩展令牌.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();
Run Code Online (Sandbox Code Playgroud)
有这样的事吗?:
$facebook->getExtendedAccessToken();
Run Code Online (Sandbox Code Playgroud)
如果没有,这是我应该做的吗?
$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}"
);
Run Code Online (Sandbox Code Playgroud)
我试过了它并没有用.我收到此错误:
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 /...
Run Code Online (Sandbox Code Playgroud)
如果我切换到FQL而不是图形API,它会有什么不同吗?我已多次阅读Facebook文档,但PHP sdk没有完整记录,我找不到任何有关如何工作的示例.
eme*_*his 29
我终于自己想出来了.答案非常反高潮.看来新创建的应用程序会自动获得60天的访问权限.我不确定这是否依赖于在应用程序设置的"迁移"部分中启用"depricate offline_access"设置.保持安全.
所以在编写本文时,您可以使用PHP SDK,如下所示: $facebook->getAccessToken();
(我的应用程序未按预期工作的原因与访问令牌的到期无关.)
还有一两件事,要获得长期的访问令牌使用PHP SDK,你应该叫$facebook->setExtendedAccessToken();前$facebook->getAccessToken();
cmi*_*tti 22
在上一个Facebook PHP SDK 3.2.0中,您有一个新功能setExtendedAccessToken()
,您必须先调用它getAccessToken();
像这样:
$user = $facebook->getUser();
$facebook->setExtendedAccessToken(); //long-live access_token 60 days
$access_token = $facebook->getAccessToken();
Run Code Online (Sandbox Code Playgroud)
Dan*_*ari 10
实际上,如果您使用服务器端呼叫,新创建的应用程序只会自动获得60天访问令牌.如果您正在使用问题中的上述客户端端点,那么即使是新应用最初仍会收到短期令牌.请参阅:https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
我在使用New Endpoint时遇到了相同的HTTP/1.1 400错误请求错误,问题是如果你复制了Facebook准确提供的代码并将其粘贴到你的应用程序中,那么params之间实际上有空格,这意味着url中不必要的空格,并且在传递到file_get_contents()时不会被正确调用,即使它在浏览器中粘贴时也能正常工作.这花了我太长时间才弄明白.希望这有助于某人!这是我完整的工作代码,用于将扩展访问令牌从新端点中取出(将x替换为您的值):
$extend_url = "https://graph.facebook.com/oauth/access_token?client_id=xxxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxxxxxxxxx&grant_type=fb_exchange_token&fb_exchange_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$resp = file_get_contents($extend_url);
parse_str($resp,$output);
$extended_token = $output['access_token'];
echo $extended_token;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26435 次 |
| 最近记录: |