Google登录失败,无法打开流Http请求失败和错误请求

时间:2016-03-23 04:08:24

标签: php codeigniter curl tankauth

如何将file_get_contents()更改为curl funtion

在以下行中出现错误。

  

致命错误:未捕获的异常'异常'邮件'必填选项未通过:access_token'在E:\ xampp \ htdocs \ google \ application \ libraries \ oauth2 \ Token \ Access.php:44堆栈跟踪:#0 E:\ xampp \ htdocs \ google \ application \ libraries \ oauth2 \ Token.php(30): OAuth2_Token_Access-> __ construct(NULL)#1 E:\ xampp \ htdocs \ google \ application \ libraries \ oauth2 \ Provider.php(224):OAuth2_Token :: factory(' access',NULL)#2 E:\ xampp \ htdocs \ google \ application \ libraries \ oauth2 \ Provider \ Google.php(61):OAuth2_Provider-> access(' 4 / tJi51U-xhCSYo ...',Array)# 3 E:\ xampp \ htdocs \ google \ application \ controllers \ auth_oa2.php(32):OAuth2_Provider_Google-> access(' 4 / tJi51U-xhCSYo ...')#4 [内部功能] :Auth_oa2->会话(' google')...

    $opts = array(
                'http' => array(
                    'method'  => 'POST',
                    'header'  => 'Content-type: application/x-www-form-urlencoded',
                    'content' => http_build_query($params),
                )
            );

            $_default_opts = stream_context_get_params(stream_context_get_default());
            $context = stream_context_create(array_merge_recursive($_default_opts['options'], $opts));
            $response = file_get_contents($url, false, $context);

            $return = json_decode($response, true);

1 个答案:

答案 0 :(得分:0)

使用curl,

$opts = array(
                'http' => array(
                    'method'  => 'POST',
                    'header'  => 'Content-type: application/x-www-form-urlencoded',
                    'content' => http_build_query($params),
                )
            );

            $_default_opts = stream_context_get_params(stream_context_get_default());
            $context = stream_context_create(array_merge_recursive($_default_opts['options'], $opts));

而不是上面的代码使用它,

$_default_opts = stream_context_get_params(stream_context_get_default());
$context = array_merge($_default_opts['options'], $params);

         $curl = curl_init();
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLINFO_HEADER_OUT, true);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_FORBID_REUSE, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($context));

        $response = curl_exec($curl);
        curl_close($curl);