facebook php sdk v4的问题

时间:2014-06-10 18:31:11

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

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

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

1)如果我在浏览器中复制并粘贴获取URL(由sdk生成),则会返回有效的访问令牌。

2)如果我在sdk中将用于从GET(默认)检索访问令牌的方法更改为POST,则会向我的应用程序返回有效的访问令牌。

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

但是,如果我发出POST请求,例如张贴到我的墙上,它就会起作用。

还应注意,sdk在内部使用curl来发出所有请求。

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

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

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

$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请求似乎都存在问题。关于可能出现什么问题的任何提示?

1 个答案:

答案 0 :(得分:0)

最终解决了问题。原来drupal正在改变&在网址中为GET请求& 。 与this相关。