【问题标题】:Given APP secret and client ID retrieve Facebook user access token给定 APP 密钥和客户端 ID 检索 Facebook 用户访问令牌
【发布时间】:2016-04-08 07:06:18
【问题描述】:

以下 Facebook 网址:

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

    参数-

    • client_id(APP ID)
    • redirect_uri(应用的重定向网址)
    • scope(权限 - 可选

    返回-

    • code(附加重定向网址)
  2. 用户成功验证应用程序后,服务提供者(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秘籍)
    • code
    • redirect_uri

这很好用,但正如您所见,它需要一个手动步骤才能从重定向的 URL 中检索 代码 并将其添加到返回 用户访问令牌的第二个 URL 。但是我不知道如何使这个过程自动化,也就是说,给定用户 App IDApp 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


【解决方案1】:

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

【讨论】:

  • 用例是每次执行功能测试时检索访问令牌(在我的例子中使用 behat)。如果您总是对测试使用相同的标记,那么测试迟早会中断。自动获取我的用户访问令牌将解决此问题。
  • 您唯一的机会是手动授权并存储一个扩展的用户令牌,有效期为 60 天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2023-03-15
  • 2013-09-06
  • 2019-11-03
  • 1970-01-01
相关资源
最近更新 更多