【发布时间】:2016-04-08 07:06:18
【问题描述】:
以下 Facebook 网址:
https://developers.facebook.com/tools/accesstoken/
显示来自 Facebook 用户创建的应用的所有用户令牌。
以下是我目前手动检索我的 Facebook 用户访问令牌的方法 (source):
OAuth 2.0
-
使用标准的 OAuth 2.0 实现,第一步是调用服务提供者 (facebook) 的 OAuth Dialog-
\GET http://www.facebook.com/dialog/oauth参数-
-
client_id(APP ID) -
redirect_uri(应用的重定向网址) -
scope(权限 - 可选)
返回-
-
code(附加重定向网址)
-
-
用户成功验证应用程序后,服务提供者(facebook)返回一个
code,并附加redirect_url传递。所以你会被重定向到-{redirect-url}?code=XXXXXXXXXXXXXXXXX然后我们使用这个
code并请求access_token-\GET https://graph.facebook.com/oauth/access_token参数-
-
client_id(APP ID) -
client_secret(APP秘籍) coderedirect_uri
-
这很好用,但正如您所见,它需要一个手动步骤才能从重定向的 URL 中检索 代码 并将其添加到返回 用户访问令牌的第二个 URL 。但是我不知道如何使这个过程自动化,也就是说,给定用户 App ID 和 App Secret,检索我的 User Access Token 无需手动步骤。
有没有办法用 PHP 脚本检索用户访问令牌?
这是我尝试使用 PHP SDK 实现此目的的方法:
require_once __DIR__ . '/vendor/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '<my app id>',
'app_secret' => '<my app secret>',
]);
$helper = $fb->getRedirectLoginHelper();
$accessToken = $helper->getAccessToken();
但是 $accessToken 返回 NULL。
可能还有其他方法可以使用 Facebook PHP SDK 做到这一点?
【问题讨论】:
-
这是不可能的——“手动步骤”是 OAuth 流程的一部分,而且是必要的。您需要在浏览器(或某种 webview 组件)中进行用户交互以获取用户访问令牌。 (如果用户之前已经授权了您的应用,他们就不必再这样做了——在这种情况下,登录对话框将很快弹出,并立即关闭并重定向回应用。)
标签: php facebook facebook-graph-api oauth facebook-php-sdk