короче сделал. Кому интересно просто через python сделал
import requests
Чтение данных из файла, где каждый токен находится на новой строке
def get_tokens_from_file(filename="accounts1.txt"):
with open(filename, 'r', encoding='utf-8', errors='ignore') as file:
return [line.strip() for line in file.readlines()]
Чтение client_id из файла
def get_client_ids_from_file(filename="accounts2.txt"):
with open(filename, 'r', encoding='utf-8', errors='ignore') as file:
return [line.strip() for line in file.readlines()]
Функция для получения access token по refresh token
def get_access_token(client_id, refresh_token):
url = "https://login.microsoftonline.com/common/oauth2/v2.0/token"
data = {
"client_id": client_id,
"grant_type": "refresh_token",
"refresh_token": refresh_token,
"scope": "https://outlook.office.com/.default"
}
response = requests.post(url, data=data)
if response.status_code == 200:
return response.json().get("access_token")
else:
print(f"Ошибка при получении токена: {response.json()}")
return None
Функция для записи токенов в файл
def save_token_to_file(access_token, filename="tokens.txt"):
with open(filename, 'a', encoding='utf-8', errors='ignore') as file:
file.write(f"{access_token}\n") # Записываем только сам токен
print(f"Token записан в {filename}")
Основная функция
def main():
refresh_tokens = get_tokens_from_file("accounts1.txt") # Чтение refresh токенов
client_ids = get_client_ids_from_file("accounts2.txt") # Чтение client_id
# Проверяем, что количество токенов и client_id совпадает
if len(refresh_tokens) != len(client_ids):
print("Количество refresh токенов и client_id не совпадает!")
return
# Перебор аккаунтов
for i in range(len(refresh_tokens)):
client_id = client_ids[i]
refresh_token = refresh_tokens[i]
print(f"Получение токена для аккаунта {i + 1}...")
access_token = get_access_token(client_id, refresh_token)
if access_token:
print(f"Access token для аккаунта {i + 1}: {access_token}")
save_token_to_file(access_token) # Запись токена в файл
else:
print(f"Не удалось получить токен для аккаунта {i + 1}")
if name == "main":
main()
используется текстовый файл accounts1.txt в котором сохраняется все refresh токены
accounts2.txt где сохраняются clientid
и tokens.txt где сохраняются токены