我是php和OAuth的新手。登录和使用代码重定向是成功的。并且还可以通过此获取访问令牌。
if (isset($_GET['code'])) {
$code = $_GET['code'];
$url = 'https://accounts.google.com/o/oauth2/token';
$params = array(
"code" => $code,
"client_id" => '123456789-123456789.apps.googleusercontent.com',
"client_secret" => '4tyajnbsd_fgjkhlkitu',
"redirect_uri" => 'https://example.com/loader/land.php',
"grant_type" => "authorization_code"
);
$ch = curl_init();
curl_setopt($ch, constant("CURLOPT_" . 'URL'), $url);
curl_setopt($ch, constant("CURLOPT_" . 'POST'), true);
curl_setopt($ch, constant("CURLOPT_" . 'POSTFIELDS'), $params);
$output = curl_exec($ch);
echo $output['access_token']; // not working to output only access token
$info = curl_getinfo($ch);
curl_close($ch);
}
但我对OAuth很陌生,只能通过
来访问令牌echo $output['access_token'];
此外,php在输出后死亡,无法继续使用我现有的代码。很难找到我。我只是个初学者。请帮我继续我需要为其他剩余进程获取access_token。非常感谢你。
答案 0 :(得分:2)
您的输出似乎是JSON格式。要访问该值,您必须json_decode()
$output
变量才能访问其中一个值。
就像这样:
echo json_decode($output, true)['access_token'];
修改强>
您还需要添加curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
以从您尝试cURL的网页中获取实际结果。有关详细信息,请参阅curl_exec()
:
成功时返回 TRUE ,失败时返回 FALSE 。但是,如果设置了 CURLOPT_RETURNTRANSFER 选项, 将在成功时返回 , FALSE 。< / p>