为什么我的PHP cURL不能在SendGrid上工作?

tyg4sfes  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(54)

我尝试将API与我的网站集成。我尝试了三种不同的API密钥。我总是得到一个错误:
提供的授权授予无效、已过期或已撤销
希望有人能给我指明方向。
下面是我的代码:

<?php
         
   $url = 'https://api.sendgrid.com/v3/mail/send';
   $headers = array(
        'Content-Type: application/json;charset=UTF-8',
        'Accept: application/json',
        'Authorization: Bearer          {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}'
   );                                                                                        
   
   $email = array
   (
      'to'        => "[email protected]",
      'toname'    => "Example User",
      'from'      => "[email protected]",
      'fromname'  => "Your Name",
      'subject'   => "PHP Test",
      'text'      => "I'm text!",
      'html'      => "<strong>I'm HTML!</strong>",
  );
         
   $curl = curl_init($url);

   curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
   curl_setopt($curl, CURLOPT_POST, true);
   curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($email));
   curl_setopt($curl, CURLOPT_TIMEOUT, 20);
   curl_setopt($curl, CURLOPT_HEADER, false);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($curl, CURLOPT_FORBID_REUSE, true);
   curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            
   $response = curl_exec($curl);
   curl_close($curl);
   $result = json_decode(preg_replace('/^'.pack('H*','EFBBBF').'/', '', $response), true);
   var_dump($result);

?>

字符串

yjghlzjz

yjghlzjz1#

在这里总结评论的结果:
该问题是由实际令牌周围的大括号引起的。
但是,SendGrid也有一个API库,可以用来代替cURL。

相关问题