【问题标题】:How do I get the App Access Token via the Facebook PHP SDK?如何通过 Facebook PHP SDK 获取 App Access Token?
【发布时间】:2013-09-13 23:31:15
【问题描述】:

我正在尝试检索我的应用的应用访问令牌以发布通知,但由于某种原因,它不起作用。代码如下:

$AppParams = array(
    'client_id'     => 'myclientid',
    '&client_secret' => 'myclientsecret',
    '&grant_type'    =>'client_credentials'
    );
$AppToken = $facebook->api('oauth/access_token?', 'GET', $AppParams);

我还用完整的 oauth/accesstoken 链接替换了第一部分,但随后它返回了我不想要的关于 oauth 及其 facebook 页面的一般信息。 我在 C# 中做了几乎相同的事情并且它在那里工作。

【问题讨论】:

  • 问题很可能是数组键中的 & 字符。你不需要它们。 SDK 处理 url 的构建和附加参数。

标签: php facebook facebook-graph-api facebook-php-sdk facebook-access-token


【解决方案1】:

您实际上不必请求应用程序访问令牌。你可以自己组装一个。

应用程序访问令牌的格式如下:

app_id|app_secret

这是应用程序的 ID、管道字符 | 和应用程序密码。

确保您的用户无法访问此应用令牌!仅在服务器端使用和引用它 - 永远不要将它传递给客户端。欲了解更多信息,请查看相关documentation 中的最后几句话。

【讨论】:

  • 它不起作用“不支持的获取请求。请阅读 developers.facebook.com/docs/graph-api 的 Graph API 文档”
  • 你好@Assaf :P 这个方法确实有效——我刚刚通过 Facebook 的调试器工具重新验证了它。您的请求可能还有另一个问题。我建议您使用debugger tool 手动尝试此方法。只要把你的app_id|app_secret 放在那里,你就会得到一些关于你的应用程序的信息。
  • @AssafShomer 您是使用官方 Facebook SDK 之一还是手动发出这些请求?
  • 谢谢你。工作正常。正是我想要的。适用于公共内容查询,例如无需在应用中登录用户的公共事件
【解决方案2】:

替换-

'&client_secret' => 'client_secret'

'&grant_type' => 'grant_type'

【讨论】:

    【解决方案3】:

    使用第 5 版 SDK,您可以使用 FacebookApp 实例的 accessToken() 方法获取访问令牌。如果你有一个 Facebook 实例(就像你通常那样),你可以像这样得到它:

    $fb->getApp()->getAccessToken()
    

    当我想使用我自己的应用程序的访问令牌时,我会像这样实例化 API。不知道有没有更干净的方法。

    $fb = new \Facebook\Facebook([
        'default_graph_version' => 'v2.8',
    ]);
    $fb->setDefaultAccessToken($fb->getApp()->getAccessToken());
    

    【讨论】:

      猜你喜欢
      • 2019-07-11
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 2013-08-10
      • 1970-01-01
      相关资源
      最近更新 更多