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