【问题标题】:PHP Oauth get Access Token from $_GET['code']PHP Oauth 从 $_GET['code'] 获取访问令牌
【发布时间】:2017-10-12 06:03:01
【问题描述】:

我是 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。非常感谢您。

【问题讨论】:

  • var_dump($output) ?
  • @AZinkey,它返回“bool(true)”。请问如何继续?
  • 整个代码都在一个函数中吗?因为有一个return 但实际上我看不到任何函数定义。
  • @Twinfriends,嗨,我从 SO 复制了该代码,这可能是主要原因吗?请你帮我修一下。谢谢。

标签: php oauth


【解决方案1】:

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

就像这样:

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


编辑: 您还需要添加curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 以从您尝试卷曲的网页中获取实际结果。更多信息请见curl_exec()

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

【讨论】:

  • 非常感谢,你救了我:)
猜你喜欢
  • 2012-01-21
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
相关资源
最近更新 更多