登录.php
<?php
define('client_id', 'cid');
define('redirect_uri', 'http://domain.tld/file.php');
define('client_secret', 'secret');
$endpoint = 'https://accounts.google.com/o/oauth2/auth';
$querystr = array(
'response_type' => 'token',
'client_id' => client_id,
'redirect_uri' => redirect_uri,
'scope' => 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile',
# 'state' => $_SERVER['REQUEST_URI']
);
if (isset($_GET['access_token']))
print_r($_GET);
else
header('Location: ' . $endpoint . '?' . http_build_query($querystr));
?>
上面的代码工作正常,我遇到的问题是我从谷歌得到的响应格式不正确。我从他们那里得到的查询字符串不是以问号?
开头,而是以数字符号开头#
。以下是来自 Google 服务器的示例返回。
http://domain.tld/file.php#access_token=ya29.AHES6ZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno&token_type=Bearer&expires_in=3600
为什么用数字符号将查询字符串与文件路径分开?是因为我没有使用 https 模式并且它在惩罚我吗?