为什么Google Drive API / Oauth2刷新令牌请求会返回错误消息“执行此操作需要SSL”?

时间:2019-02-15 07:12:38

标签: php oauth-2.0 google-drive-api php-curl refresh-token

我是OAuth2的新手,这使我感到困惑,为什么我的刷新令牌请求得到响应“执行此操作需要SSL”。显然,我们从DigitalOcean获得了免费的SSL。

  public function refresh_token($test = false){

    $url = "www.googleapis.com/oauth2/v4/token";
    $credentials = $this->credentials();
    $refresh_token = $credentials->refresh_token;
    $client_id = $credentials->client_id;
    $client_secret = $credentials->client_secret;
    $redirect =  base_url($credentials->redirect_url);

    $data = "client_id=$client_id&client_secret=$client_secret&refresh_token=$refresh_token&grant_type=refresh_token";

    $access = $this->curl_post($url,$data,array('Content-Type: application/x-www-form-urlencoded'));

    if($test){
      echo "<pre>";
      echo $access;
      die();
    }

    $access = json_decode($access);

    if(isset($access->access_token)){
      $this->admin->update(
        array('access_token'=>$access->access_token),
        'sheet_config',
        array('status'=>1)
      );
      echo $access->access_token;
      return true;
    }else{
      echo $access->error->message;
      return false;
    }
  }

我期待一个新令牌的结果或某些错误,例如您的证书被弄乱,或者您需要先用数字海洋配置一些有关SSL的信息

我对SSL和其他内容非常了解,但是我很确定我们拥有SSL 因为我们运行https://

1 个答案:

答案 0 :(得分:1)

因为通过HTTP调用授权服务器确实很糟糕!

$url = "www.googleapis.com/oauth2/v4/token";与执行$url = "http://www.googleapis.com/oauth2/v4/token"相同;并且没有授权服务器会对此做出响应。

话虽这么说,我认为您只是在网址前面缺少 https

$url = "https://www.googleapis.com/oauth2/v4/token";