PHP Oauth从$ _GET获取访问令牌['代码']

时间:2017-10-12 06:03:01

标签: php oauth

我是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);

} 

结果如图所示。result from the code

但我对OAuth很陌生,只能通过

来访问令牌
echo $output['access_token'];

此外,php在输出后死亡,无法继续使用我现有的代码。很难找到我。我只是个初学者。请帮我继续我需要为其他剩余进程获取access_token。非常感谢你。

1 个答案:

答案 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>