web-dev-qa-db-fra.com

Comment accéder à un site SharePoint via le REST API en Python?

J'ai le site suivant dans SharePoint 2013 sur ma machine virtuelle locale:

http://win-5a8pp4v402g/sharepoint_test/site_1/

Lorsque j'accède à cela à partir du navigateur, il me demande le nom d'utilisateur et le mot de passe, puis fonctionne correctement. Cependant, j'essaie de faire la même chose en utilisant l'API REST en Python. J'utilise la bibliothèque de requêtes, et voici ce que j'ai fait: 

import requests
from requests.auth import HTTPBasicAuth


USERNAME = "Administrator"

PASSWORD = "password"

response = requests.get("http://win-5a8pp4v402g/sharepoint_test/site_1/", auth=HTTPBasicAuth(USERNAME, PASSWORD))

print response.status_code

Cependant, je reçois un 401. Je ne comprends pas. Qu'est-ce que je rate?

Note: J'ai suivi cet article http://tech.bool.se/using-python-to-request-data-from-sharepoint-via-rest/

15
Indradhanush Gupta

Il est possible que votre site SharePoint utilise un schéma d'authentification différent. Vous pouvez vérifier cela en inspectant le trafic réseau dans Firebug ou dans les outils de développement Chrome.

Heureusement, la bibliothèque de requêtes prend en charge de nombreuses options d'authentification: http://docs.python-requests.org/en/latest/user/authentication/

Par exemple, l'un des réseaux auxquels j'avais besoin d'accéder utilise l'authentification NTLM. Après avoir installé le plug-in request-ntml , j'ai pu accéder au site à l'aide d'un code similaire à celui-ci:

import requests
from requests_ntlm import HttpNtlmAuth

requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('DOMAIN\\USERNAME','PASSWORD'))
27
TomL

Si d'autres lecteurs envisagent également d'interroger des listes Python à l'aide de Python et directement des requêtes HTTP, à l'aide de l'authentification NTLM, je vous suggère de consulter la page suivante: http://blog.carg.io/listing-and-updating-a -sharepoint-list-in-python/

Vous trouverez un exemple complet d'authentification pour interroger et mettre à jour les listes Sharepoint.

1
fokas

Voici un exemple d'appel à l'API SharePoint 2016 REST de Python pour créer un site.

import requests,json,urllib
from requests_ntlm import HttpNtlmAuth

root_url = "https://sharepoint.mycompany.com"
headers = {'accept': "application/json;odata=verbose","content-type": "application/json;odata=verbose"}
##"DOMAIN\username",password 
auth = HttpNtlmAuth("MYCOMPANY"+"\\"+"UserName",'Password')


def getToken():
    contextinfo_api = root_url+"/_api/contextinfo"
    response = requests.post(contextinfo_api, auth=auth,headers=headers)
    response =  json.loads(response.text)
    digest_value = response['d']['GetContextWebInformation']['FormDigestValue']
    return digest_value

def createSite(title,url,desc):
    create_api = root_url+"/_api/web/webinfos/add"
    payload = {'parameters': {
            '__metadata':  {'type': 'SP.WebInfoCreationInformation' },
            'Url': url,
            'Title': title,
            'Description': desc,
            'Language':1033,
            'WebTemplate':'STS#0',
            'UseUniquePermissions':True}
        }
    response = requests.post(create_api, auth=auth,headers=headers,data=json.dumps(payload))
    return json.loads(response.text)

headers['X-RequestDigest']=getToken()
print createSite("Human Resources","hr","Sample Description")
0
Mihir Thakkar

Vous pouvez également utiliser le module sharepoint de PyPI, décrit comme "Module et utilitaire de ligne de commande pour extraire des données de SharePoint"

0
ndemou