Я сохранил токен доступа в БД и зациклил каждого пользователя на получение почты. он отлично работает для первого пользователя, для второго пользователя accesstoken обновляется, но получает почту первого пользователя. Я использую плагин LaravelGmail
Если я получаю доступ с одним пользователем, он работает нормально
public function sync()
{
$stafflist = Staff::all();
if (!empty($stafflist)) {
foreach ($stafflist as $key => $value) {
$this->service = new LaravelGmail;
$set_token = $this->setactiveToken($value->staffToken, $value->staffEmail);
try {
$messages = $this->service::message()->take(5)->all();
if (!empty($messages)) {
foreach ($messages as $loop) {
$detmsg = $this->service::message()->get($loop->getId());
$dettoken = $this->service::getAccessToken();
$maildate = $detmsg->getInternalDate();
$sender = $detmsg->getHeader('From');
preg_match('/<(.*)>/', $sender, $matches);
$sender_mail = isset($matches[1]) ? $matches[1] : $sender;
$result = Smailer::firstOrCreate(['mailReceiver' => $value->staffUID, 'mailThreadID' => $loop->getId()],
['mailSender' => $sender_mail, 'mailSubject' => $detmsg->getSubject(),
'mailContent' => $detmsg->getPlainTextBody(), 'mailHasAttachment' => $detmsg->hasAttachments(), 'mailReceivedDt' => $maildate]);
}
}
unset($this->service);
} catch (Google_Service_Exception $e) {
}
}
}
return redirect('control/mails');
}
private function setactiveToken($stoken = '', $email = '')
{
$this->service::setAccessToken($stoken);
if ($this->service::isAccessTokenExpired()) {
$this->service::fetchAccessTokenWithRefreshToken($this->service::getRefreshToken());
$token = $this->service::getAccessToken();
$token['email'] = $email;
$resp = Staff::where('staffEmail', $email)
->update(['staffToken' => json_encode($token)]);
}
}