【问题标题】:Accessing Sharepoint Resources using OAuth via Python通过 Python 使用 OAuth 访问 Sharepoint 资源
【发布时间】:2020-01-20 14:59:07
【问题描述】:

我熟悉 OAuth,但不熟悉 Microsoft 的 API 如何工作。他们有很多杂乱无章的文档,实际上并不能帮助我理解该做什么。我想使用 Python 脚本访问 Sharepoint 文件。我想使用 client_id 和 client_secret 来获取特定共享点站点的访问令牌并访问那里的资源。做这个的最好方式是什么?是否有任何官方的 microsoft API/文档可以简化此过程?

感谢您的帮助!

【问题讨论】:

    标签: python sharepoint oauth


    【解决方案1】:

    检查下面的代码。代码来自这里:get-sharepoint-access-token.py

    import cherrypy
    import jwt
    import urllib.parse, urllib.request
    import json
    
    SPSECRET = 'gpYucHkODHOv6JxZJ89Kihl9ncTiTrUCAbOaF1N6uJE='
    
    cherrypy.config.update({'server.socket_port': 3005,
                            'server.ssl_module': 'builtin',
                            'server.ssl_certificate': 'cert.pem',
                            'server.ssl_private_key': 'privkey.pem'})
    
    class GetAccessToken(object):
        def index(self, **kwargs):
            cl = cherrypy.request.body.params
            spapptoken = cl['SPAppToken']
            decodedtoken = jwt.decode(spapptoken, SPSECRET, verify=False)
    
            url = json.loads(decodedtoken['appctx'])['SecurityTokenServiceUri']
            values = {
                'grant_type': 'refresh_token',
                'client_id': decodedtoken['aud'].split('/')[0],
                'client_secret': SPSECRET,
                'refresh_token': decodedtoken['refreshtoken'],
                'resource': decodedtoken['appctxsender'].split('@')[0] + '/' + decodedtoken['aud'].split('/')[1].split('@')[0] + '@' + decodedtoken['appctxsender'].split('@')[1]
            }
            data = urllib.parse.urlencode(values)
            binarydata = data.encode('ascii')
            req = urllib.request.Request(url, binarydata)
            response = urllib.request.urlopen(req)
            page = response.read()
    
            return repr(page)
    
        index.exposed = True
    
    cherrypy.quickstart(GetAccessToken())
    

    或者我们可以使用Office365-REST-Python-Client 访问SharePoint。

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 2018-03-26
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 2018-03-04
      • 1970-01-01
      • 2011-04-18
      • 2022-09-27
      相关资源
      最近更新 更多