[Python] I'm getting error 400: redirect_uri_mismatch while trying to post to blogger from...

Discussão em 'Python' iniciado por Stack, Março 13, 2025.

  1. Stack

    Stack Membro Participativo

    I want to post on blogger with python with blogger API, but I can't, I spent 24 hours and still cant make it work.

    This is the code:

    import os
    import google.auth
    import google_auth_oauthlib.flow
    import googleapiclient.discovery
    import googleapiclient.errors

    # Ruta al archivo de credenciales OAuth 2.0 que descargaste
    CREDENTIALS_FILE = 'cred.json'

    # ID del blog donde vas a publicar (lo puedes encontrar en la URL de tu blog en Blogger)
    BLOG_ID = '2045983628813599998'

    def authenticate_blogger_api():
    """Autentica y crea un cliente de la API de Blogger"""
    # Definir los alcances que vamos a usar (escribir y leer entradas)
    SCOPES = ['https://www.googleapis.com/auth/blogger']

    # Carga de credenciales desde el archivo
    flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(CREDENTIALS_FILE, SCOPES)

    # Ejecuta el flujo de OAuth 2.0 para autenticar al usuario
    creds = flow.run_local_server(port=0)

    # Crear un cliente de la API de Blogger
    service = googleapiclient.discovery.build('blogger', 'v3', credentials=creds)

    return service

    def create_blog_post(service, blog_id, title, content):
    """Crea una nueva entrada en Blogger"""
    # Crear el cuerpo de la nueva entrada
    post = {
    'kind': 'blogger#post',
    'title': title,
    'content': content
    }

    # Usar la API para insertar la entrada en el blog
    try:
    posts = service.posts()
    result = posts.insert(blogId=blog_id, body=post).execute()
    print(f"Entrada publicada con éxito: {result['url']}")
    except googleapiclient.errors.HttpError as error:
    print(f"Ocurrió un error: {error}")

    if __name__ == '__main__':
    # Autenticación a la API de Blogger
    service = authenticate_blogger_api()

    # Título y contenido de la nueva entrada
    title = "Mi primera entrada desde Python"
    content = "<h1>Hola Mundo desde Python</h1><p>Este es un post creado automáticamente usando la API de Blogger.</p>"

    # Crear la entrada en el blog
    create_blog_post(service, BLOG_ID, title, content)


    But it doesn't work, it sends me to my browser and I get this error:


    Error 400: redirect_uri_mismatch
    Access denied
    ​

    What am I doing wrong?

    These are some of the credentials from the json:


    "redirect_uris": ["https://localhost:8080/"]
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",


    I used 2 Google accounts in the OAuth project but it doesn't work.

    I tried to add and remove more accounts, but it still doesn't work.

    Continue reading...

Compartilhe esta Página