PHP Oauth从$ _GET获得访问令牌['code']

问题描述:

我是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。提前谢谢你。

+0

var_dump($ output)? – AZinkey

+0

@AZinkey,它返回“bool(true)”。请问如何继续? –

+0

这是整个代码的功能吗?因为有'返回',但实际上我看不到任何函数定义。 – Twinfriends

您的输出似乎是JSON格式。要访问该值,在访问其值之一之前,必须登录json_decode()变量$output

就像这样:

echo json_decode($output, true)['access_token']; 


编辑: 您还需要添加curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);摆脱你想卷曲的网页的实际结果。有关更多信息,请参见curl_exec()

成功返回TRUE 失败FALSE。但是,如果CURLOPT_RETURNTRANSFER选项设置,它会在失败时返回成功结果,FALSE

+1

非常感谢你,你救了我:) –