php - symfony2测试带有发布数据的客户请求

标签 php facebook symfony facebook-php-sdk

我想在symfony web应用上测试与facebook的登录,我创建了一个测试用户并请求该用户的访问 token ,我想发送以下发布请求:

public function setup()
{
    $this->access_token = 'CAAL0aG1XXXXXX...';
    $this->email = 'test....@tfbnw.net';
    $this->uid = '105.......';
    $this->formData =json_encode(
        array(
            'authResponse' => array(
                'access_token' => $this->access_token,
                'expiresIn' => 5418,
                'userID' => $this->uid
            ),
            'status' => 'connected'));
}

public function testFacebookConnection()
{
    $client = static::createClient();
    // Submit a raw JSON string in the request body
    $client->request(
        'POST',
        $client->getContainer()->get('router')->generate('oauth_connect'),
        array(),
        array(),
        array('CONTENT_TYPE' => 'application/json'),
        '{ "service":"facebook","authentication" : "'. $this->formData.'"}'
    );
    die(var_dump($client->getResponse()->getContent()));
}

并在调用URI方法签名下方
/**
 * Calls a URI.
 *
 * @param string $method        The request method
 * @param string $uri           The URI to fetch
 * @param array  $parameters    The Request parameters
 * @param array  $files         The files
 * @param array  $server        The server parameters (HTTP headers are referenced with a HTTP_ prefix as PHP does)
 * @param string $content       The raw body data
 * @param bool   $changeHistory Whether to update the history or not (only used internally for back(), forward(), and reload())
 *
 * @return Crawler
 */
public function request($method, $uri, array $parameters = array(), array $files = array(), array $server = array(), $content = null, $changeHistory = true)
{

最佳答案

您应该在方法签名后的第三个参数中使用post params:

$this->postData =
        array(
            'service' => 'facebook',
            'authentication'=> $this->formData,
            );
然后调用以下方法:
 $client->request(
            'POST',
            $client->getContainer()->get('router')->generate('oauth_connect'),
            $this->postData,
            array(),
            array('CONTENT_TYPE' => 'application/json')
        );

关于php - symfony2测试带有发布数据的客户请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35386283/

相关文章:

javascript - 使用 Facebook API 获取用户被邀请参加的所有事件

postgresql - 一个数据库中的多个 Symfony 项目,但不同的 Postgres 模式

symfony - 学说查询构建器限制和偏移

javascript - 通过选择启用/禁用输入

php - mysql服务器宕机怎么处理?

php - php抽象类中的构造函数有什么用

css - 安装和配置 sass 和 compass 以与基础一起使用

php - laravel QueryException 行 770

php - 从 Facebook API 获取随机用户的公开帖子

ios - 用于 rails 和 ios 身份验证的omniauth