Office365-rest-python-client: AttributeError : l'objet 'ClientContext' n'a pas d'attribut '_auth_context'

Créé le 7 déc. 2020  ·  6Commentaires  ·  Source: vgrem/Office365-REST-Python-Client

Utilise actuellement Office365-REST-Python-Client==2.3.0.1

Quand je lance le code suivant :

def upload_to_sharepoint():
    url = 'https://tenant.sharepoint.com/sites/sitename'

    credentials = {
        'client_id': os.environ.get('client_id'),
        'client_secret': os.environ.get('client_secret'),
    }
    context_auth = AuthenticationContext(url=url)
    context_auth.acquire_token_for_app(client_id=credentials['client_id'],
                                       client_secret=credentials['client_secret'])
    ctx = ClientContext(url, context_auth)
    web = ctx.web
    ctx.load(web)

    file_name = f"vat check {datetime.now().strftime('%Y-%m-%d')}"
    path = os.path.join("/tmp", file_name)

    with open(path, 'rb') as content_file:
        file_content = content_file.read()

    list_title = "VAT Check"
    target_folder = ctx.web.lists.get_by_title(list_title).rootFolder
    # name = os.path.basename(path)
    target_file = target_folder.upload_file(file_name, file_content)
    ctx.execute_query()
    print(f"File url: {target_file.serverRelativeUrl}")

J'obtiens l'erreur suivante, cela semble être une erreur en interne et non à propos de l'authentification, ou est-ce que j'ai raté quelque chose ?

AttributeError: 'ClientContext' object has no attribute '_auth_context'
bug

Tous les 6 commentaires

C'était rapide, merci @vgrem qui résout le problème, l'a testé localement.

Les salutations,

merci de l'avoir attrapé ! Il s'avère que l'instance de AuthenticationContext s'est perdue lors du passage dans ClientContext .

D'un autre côté, puisque AuthenticationContext.acquire_token_for_app est considéré comme _déprécié_ de nos jours, une autre option (_recommandée_) serait de passer de :

context_auth = AuthenticationContext(url=url)
context_auth.acquire_token_for_app(client_id=credentials['client_id'],
                                       client_secret=credentials['client_secret'])
ctx = ClientContext(url, context_auth)

dans

credentials = ClientCredential(credentials['client_id'], credentials['client_secret'])
ctx = ClientContext(settings['url']).with_credentials(credentials)

je reçois toujours ce problème.
Quelle pourrait être la raison

Vous devez probablement mettre à jour votre package : pip install --upgrade Office365-REST-Python-Client @spurthikaribasaiah

Salut @erfannariman et @vgrem ,

J'ai essayé avec la commande ci-dessus. J'ai toujours le même problème.
Veuillez trouver l'extrait de code ci-dessous. J'utilise les identifiants de l'utilisateur

pip install --upgrade pip
pip installer Office365-REST-Python-Client
pip install --upgrade Office365-REST-Python-Client

depuis office365.runtime.auth.authentication_context importer AuthenticationContext
depuis office365.sharepoint.client_context importer ClientContext

ctx_auth = AuthenticationContext (Sharepoint_SiteUrl)
ctx_auth.acquire_token_for_user (utilisateur, passe)
ctx = ClientContext (Sharepoint_SiteUrl, ctx_auth)
web = ctx.web
ctx.load(web)
ctx.execute_query()
print("Authentification réussie")

image

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

ahulist picture ahulist  ·  5Commentaires

stardust85 picture stardust85  ·  4Commentaires

attibalazs picture attibalazs  ·  10Commentaires

domdinicola picture domdinicola  ·  4Commentaires

etiennecelery picture etiennecelery  ·  4Commentaires