Как мне получить ouath2 токен

Поддержка
  • У меня есть купленные аккаунты outlook, и я хотел использовать ouath2 (access token) чтобы использовать модуль почта и получить содержание последнего письма.
    В комплекте к купленным аккаунтам у меня идет кажется refresh токен. Можно ли как то из refresh token сделать access токен прямо в bas?

    Перерыл несколько тем, но четкого ответа не нашел, и не понимаю как это сделать

  • короче сделал. Кому интересно просто через 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 где сохраняются токены

  • 0 Votes
    4 Posts
    500 Views
  • 0 Votes
    8 Posts
    767 Views
  • 0 Votes
    2 Posts
    509 Views
  • 0 Votes
    19 Posts
    1630 Views
  • 0 Votes
    2 Posts
    658 Views