Gmail API获取列表"发生错误:{"错误":" invalid_grant"," error_description":"错误请求" }"用PHP

时间:2017-07-23 05:01:43

标签: api gmail

我正在尝试使用php库获取邮件列表。之前它正在工作,但现在它显示以下错误:

  

发生错误:{"错误":" invalid_grant"," error_description":   "错误请求" }

     

array(0){}

代码:

function getList($lastsynctime='') {       
  // Get the API client and construct the service object.
  $client = $this->getClient();
  $service = new Google_Service_Gmail($client);

  // $newTime = strtotime('-15 minutes');
  if ($lastsynctime =='') {        
    $newTime = strtotime('-60 day');
    $after = strtotime(date('Y-m-d H:i:s', $newTime));
  }else{
    $after = strtotime($lastsynctime);
  }

  // Print the labels in the user's account.
  $userId = 'me';
  $pageToken = NULL;
  $messages = array();
  $opt_param = array();
  do {
    try {
      if ($pageToken) {
        $opt_param['pageToken'] = $pageToken;
      }

      $opt_param['q'] = "from:example@gmail.com after:$after";

      $messagesResponse = $service->users_messages->listUsersMessages($userId, $opt_param);
  echo "<pre>";var_dump($messagesResponse);

    } catch (Exception $e) {
      print 'An error occurred: ' . $e->getMessage();
    }
  } while ($pageToken);


  return $messagesResponse;
}

2 个答案:

答案 0 :(得分:2)

嘛!由于您的代码之前正在运行,并且您没有更改任何内容。然后我认为问题不在你的代码中。

您可以在gmail 我的帐户菜单下查看已关联的应用和网站设置,以确保您的应用在那里。

如果应用程序在那里但尚未运行,则您需要删除该应用并重新生成客户端密钥。因为您的客户机密可能会过期。

答案 1 :(得分:0)

我在其他API(Google Search Console)中收到此错误。

尝试从您的Gmail帐户访问https://myaccount.google.com/security#connectedapps

查看Drive Testing Key下是否显示Apps with account access。如果没有,则就像@Mahbubul Islam提到的那样,您需要再次创建凭据。