我在Postman中提出了相同的请求,它给了我正确的答案,但当我从我的网站拨打同一个电话时,它会崩溃。
我只是试图通过一个标头,即oauth2授权令牌从PHP发出GET请求。
代码(googleLogin.php):
<?php
$url = "https://www.googleapis.com/oauth2/v1/userinfo?alt=json";
$options = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Authorization: Bearer " . $_GET["access_token"] . "\r\n"
)
);
$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);
print_r($file);
?>
错误:
PHP Warning:
file_get_contents(https://www.googleapis.com/oauth2/v1/userinfo?alt=json):
failed to open stream: HTTP request failed! HTTP/1.0 401 Unauthorized
in /home/shawn/public_html/cloud/php/googleLogin.php on line 14
我不知道这个错误是否意味着(i)Web服务器上的文件googleLogin.php没有正确的权限(我试过777),(ii)访问令牌已过期/无效(它不能因为我试过了同样的令牌2秒后成功使用Postman),或者(iii)php正在格式化我的HTTP请求