/** * Check for and do an Oauth2 token reset if needed * @param array $server imap server data * @param object $config site config object * @return mixed */ function smtp_refresh_oauth2_token($server, $config) { if (array_key_exists('expiration', $server) && (int) $server['expiration'] <= time()) { $oauth2_data = get_oauth2_data($config); $details = array(); if ($server['server'] == 'smtp.gmail.com') { $details = $oauth2_data['gmail']; } if (!empty($details)) { $oauth2 = new Hm_Oauth2($details['client_id'], $details['client_secret'], $details['client_uri']); $result = $oauth2->refresh_token($details['refresh_uri'], $server['refresh_token']); if (array_key_exists('access_token', $result)) { return array(strtotime(sprintf('+%d seconds', $result['expires_in'])), $result['access_token']); } } } return array(); }