Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
Php 尝试使用Google OAuth 2.0登录混合流时出错(带有消息的Google#IO#x27;异常';HTTP错误:无法连接:';0';';)_Php_Google Plus_Google Oauth_Google Api Php Client - Fatal编程技术网

Php 尝试使用Google OAuth 2.0登录混合流时出错(带有消息的Google#IO#x27;异常';HTTP错误:无法连接:';0';';)

Php 尝试使用Google OAuth 2.0登录混合流时出错(带有消息的Google#IO#x27;异常';HTTP错误:无法连接:';0';';),php,google-plus,google-oauth,google-api-php-client,Php,Google Plus,Google Oauth,Google Api Php Client,我正在尝试使用服务器端混合流实现“使用G+登录”按钮,但我一直收到相同的错误: Google_IO_Exception' with message 'HTTP Error: Unable to connect: '0' 我到处都找过了,什么都试过了,我修不好。 我使用的是来自GitHub的最新版本的Google PHP客户端库(上次更新于5月17日)。 我检查了无数次我的客户id和客户机密是否正确 这是我的密码: set_include_path("C:\wamp\www\src" . PAT

我正在尝试使用服务器端混合流实现“使用G+登录”按钮,但我一直收到相同的错误:

Google_IO_Exception' with message 'HTTP Error: Unable to connect: '0'
我到处都找过了,什么都试过了,我修不好。 我使用的是来自GitHub的最新版本的Google PHP客户端库(上次更新于5月17日)。 我检查了无数次我的客户id和客户机密是否正确

这是我的密码:

set_include_path("C:\wamp\www\src" . PATH_SEPARATOR . get_include_path());

include_once '../config/config.php';
require_once 'Google/Client.php';
require_once 'Google/Service.php';
require_once 'Google/Service/Plus.php';



$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->addScope("https://www.googleapis.com/auth/plus.login");

if (isset($_REQUEST['storeToken'])) {
    if (isset($_POST['code'])) {
      $client->authenticate($_POST['code']); // ERROR
        $_SESSION['access_token'] = $client->getAccessToken();
        unset($_SESSION['logout']);
    }
}
我使用用户登录后获得的
code
参数尝试了一个cURL请求

curl --data code=4%2F3dZSVbozE_Kd4Sdf85KHPln-wChQ.ojCViNnNCQcYYKs_1NgQtmXZbUwqjAI&grant_type=authorization_code&redirect_uri=postmessage&client_id=<my_client_id>&client_secret=<my_client_secret> https://accounts.google.com/o/oauth2/token
curl--data code=4%2F3dZSVbozE\u Kd4Sdf85KHPln-wChQ.ojcvinncqcyks\u 1NgQtmXZbUwqjAI&grant\u type=authorization\u code&redirect\u uri=postmessage&client\u id=&client\u secret=https://accounts.google.com/o/oauth2/token
它工作得很好,我明白了:

{
  "access_token" : "ya29.GwAwNLxa5vExHxoAAACkL-MxCUL7K6SlOLSs2DNWCBipZcpyYwcOohejabVBYg",
  "token_type" : "Bearer",
  "expires_in" : 3565,
  "id_token" : "<very_long_id_token>",
  "refresh_token" : "1/4Tj6y6yCQQFH2XzrLumNqMmurAr4Ik0pooF4nrhe1Zk"
}
{
“访问令牌”:“ya29.gwawnlxa5vexhaaaackl-mxcul7k6slolss2dnwcbipzcpywcoohejabbyg”,
“令牌类型”:“承载者”,
“expires_in”:3565,
“id_令牌”:“,
“刷新令牌”:“1/4TJ6Y6YCQFH2XZrLUMNQMURAR4IK0POOF4NRHE1ZK”
}
首先,我认为我请求的某些参数是错误的,因为非常奇怪的是,库不断返回相同的错误(Google_IO_Exception)并显示消息“HTTP错误:无法连接:'0'),即使参数是错误的(我尝试了
$client->authenticate('这不是有效代码');
)或者如果对google.accounts的请求返回uri\u不匹配。这正常吗

我希望有人能帮忙,因为我不知道该怎么办:/

多谢各位

PS:我正在使用WAMP服务器2.4(PHP版本5.4.12)运行这些测试

我最终通过更改以下PHP.ini设置解决了此问题:

  • 我(通过取消注释)设置了“https”URL所需的扩展名=php_openssl.dll;及
  • 我设定了时区。谷歌对时间很挑剔,所以这可能会影响结果

  • 我重新启动了Apache,一切都很好

    您的$redirect\u uri设置为什么?我不这么认为,但我只是想知道。@DalmTo我把它设置为“postmessage”<代码>$redirect_uri='postmessage'我还尝试将其设置为我页面的URL(并在Google Developers控制台中修改重定向uri)。但我不认为这是问题所在,因为当我(故意)尝试一个错误的重定向uri时,请求(使用cURL)显然返回了重定向uri不匹配。您是否遵循了这方面的教程?你的代码看起来和我以前见过的完全不同。但是我以前没有尝试过plus.login。我很惊讶,它与其他Google APIsYep如此不同,我正在关注它,但它是用法语写的(对不起)。但是我读过很多关于这个主题的教程,它们都使用相同的想法。看(这次用英语)。我发现developpers.google.com上的教程记录得很差。他们只展示片段,不解释一切。我还尝试使用他们的“PHP快速入门示例”,这导致了相同的错误。请链接到教程:)