给定 APP 秘密和客户端 ID 检索 Facebook 用户访问令牌

Given APP secret and client ID retrieve Facebook user access token

以下 Facebook URL:

https://developers.facebook.com/tools/accesstoken/

显示来自 Facebook 用户创建的应用程序的所有用户令牌。

这是我目前如何手动检索我的 Facebook 用户访问令牌 (source):

OAuth 2.0

  1. 使用标准的 OAuth 2.0 实现,第一步是调用服务提供商 (facebook) 的 OAuth Dialog-

    \GET http://www.facebook.com/dialog/oauth

    Parameters-

    • client_id (APP ID)
    • redirect_uri (App's Redirect Url)
    • scope (permissions - optional)

    Returns-

    • code (appended with the redirect url)
  2. 用户成功验证应用程序后,服务提供商(facebook)返回一个code并附加通过的redirect_url。所以你会被重定向到-

    {redirect-url}?code=XXXXXXXXXXXXXXXXX

    然后我们使用这个 code 并请求 access_token-

    \GET https://graph.facebook.com/oauth/access_token

    Parameters-

    • client_id (APP ID)
    • client_secret (APP Secret)
    • code
    • redirect_uri

这工作正常,但如您所见,它需要手动步骤才能从重定向的 URL 中检索 code 并将其添加到第二个 URL 即 returns 用户访问令牌 。但是我不知道如何使这个过程自动化,也就是说,给定一个用户 App IDApp Secret,检索我的 无需手动步骤的用户访问令牌

有什么方法可以使用 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 returns NULL.

是否有其他方法可以使用 Facebook PHP SDK 执行此操作?

无法自动获取用户令牌或自动进行用户授权。这将使整个用户授权变得毫无意义,并且没有严肃的用例。获取用户令牌的唯一方法是手动授权用户(通过构建手动登录流程或使用其中一个 SDK)。