【问题标题】:Problems with facebook php sdk v4facebook php sdk v4 的问题
【发布时间】:2014-07-31 15:40:27
【问题描述】:

我正在尝试让 facebook php sdk v4 与我的应用程序一起使用。我正在使用 Drupal 和带有 phpfpm 的 nginx 服务器。

当我尝试从 facebook sdk 获取会话时,我收到错误 - 缺少重定向 uri 参数。在调试时,我发现发生了 2 件奇怪的事情 -

1) 如果我将 get url(由 sdk 生成)复制并粘贴到我的浏览器中,则会返回一个有效的访问令牌。

2) 如果我在 sdk 中将获取访问令牌的方法从 GET(default) 更改为 POST,则会向我的应用返回一个有效的访问令牌。

此外,当使用我从 POST 调用收到的访问令牌时,如果我向图形 api 发出进一步的 GET 请求,它们都不起作用。

但是,如果我发出 POST 请求,例如发布到我的墙上,它就可以工作。

另外需要注意的是,sdk 在内部使用 curl 来发出所有请求。

编辑: 代码示例 - 生成登录网址

$helper = new \Facebook\FacebookRedirectLoginHelper($this->redirectUrl);
$loginUrl = $helper->getLoginUrl(array('public_profile', 'email', 'user_friends', 'publish_actions'));

现在此人被带到 facebook 进行身份验证并重定向到我的重定向 url。这里的代码是 -

$helper = new \Facebook\FacebookRedirectLoginHelper($this->redirectUrl);
$session = helper->getSessionFromRedirect();

由于 getSessionFromRedirect 在内部使用 GET 调用,它对我不起作用。当我将 sdk 代码更改为使用 POST 时,会返回一个有效的访问令牌。

此外,当我使用 POST 请求获得有效会话时,这也有效

$response = (new FacebookRequest(
        $session, 'POST', '/me/feed', array(
            'link' => 'www.example.com',
            'message' => 'User provided message'
        )
    ))->execute()->getGraphObject();

但这不起作用 -

$user_profile = (new FacebookRequest(
      $session, 'GET', '/me'
    ))->execute()->getGraphObject(GraphUser::className());

    echo "Name: " . $user_profile->getName();

显然,所有 GET 请求似乎都存在问题。关于可能是什么问题的任何提示?

【问题讨论】:

  • 你能提供一些你打电话的例子吗?用于获取会话和您进行的 GET 调用?
  • 是的,添加它们!
  • 谢谢。使用您检索到的访问令牌,您可以在 Graph Explorer 中复制问题吗? (developers.facebook.com/tools/explorer)
  • 不,我不能。正如我所说,即使我只是将 url(带有查询参数)复制并粘贴到我的浏览器中,它也可以工作。但是 sdk 发出的 GET 调用似乎根本不起作用。
  • 如果您的应用是 Canvas App 或 Page App,那么是的,您需要使用 POST 来检索会话数据。 GET 将适用于网站/非 Facebook 应用程序。

标签: php facebook facebook-graph-api drupal facebook-php-sdk


【解决方案1】:

终于解决了问题。事实证明,drupal 正在将 GET 请求的 & in url 更改为 & 。 与this 相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多