Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
facebook php sdk v4的问题_Php_Facebook_Facebook Graph Api_Drupal_Facebook Php Sdk - Fatal编程技术网

facebook php sdk v4的问题

facebook php sdk v4的问题,php,facebook,facebook-graph-api,drupal,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Drupal,Facebook Php Sdk,我正在尝试让facebook php sdk v4与我的应用程序配合使用。我正在使用Drupal和带有phpfpm的nginx服务器 当我尝试从FacebookSDK获取会话时,我得到了错误-缺少重定向uri参数。在调试时,我发现发生了两件奇怪的事情- 1) 如果在浏览器中复制并粘贴get url(由sdk生成),将返回有效的访问令牌 2) 如果我将在sdk中从GET(默认)检索访问令牌的方法更改为POST,则会向我的应用程序返回有效的访问令牌 另外,当使用从POST调用收到的访问令牌时,如果我

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

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

1) 如果在浏览器中复制并粘贴get url(由sdk生成),将返回有效的访问令牌

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

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

然而,如果我提出一个帖子请求,比如贴到我的墙上,它会起作用

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

编辑: 代码示例- 生成登录url的步骤

$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请求似乎都存在问题。有什么问题的提示吗?

最终解决了问题。事实证明drupal正在将GET请求的&in url更改为&。
与……有关

你能提供一些你打电话的例子吗?都是为了得到会话和你打的电话?是的,当然,添加它们!谢谢使用检索到的访问令牌,可以在图形资源管理器中复制问题吗?不,我不能。正如我所说,即使我只是简单地将url(带有查询参数)复制并粘贴到我的浏览器中,它也能工作。但是sdk发出的GET调用似乎根本不起作用。如果你的应用程序是画布应用程序或页面应用程序,那么是的,你需要使用POST来检索会话数据。GET适用于网站/非Facebook应用程序。