使用python

时间:2018-02-05 14:56:22

标签: python oauth-2.0

我正在尝试使用Python自动下载sharepoint office 365文件。 我找到了以下客户端 https://github.com/vgrem/Office365-REST-Python-Client

但是我的要求是使用一个使用clientid和secret来获取acesses令牌然后下载文件的简单客户端。

如果您了解OAuth2,那么此流程称为客户端凭据授予。 但是当我通过示例部分中的Python客户端时,我看到了

settings.py
settings = {
    'url': 'https://mediadev20.sharepoint.com/sites/contoso',
    'username': 'mattim@mediadev20.onmicrosoft.com',
    'password': 'P@ssw0rd'
}

app_settings = {
    'url': 'https://mediadev20.sharepoint.com/sites/contoso',
    'client_id': '99cbd1a9-ec8d-4e89-96c3-699993089d65',
    'client_secret': 'VMdT8mOurDhsvG8yDnP3yFg',
    'redirect_url': 'https://github.com/vgrem/Office365-REST-Python-Client/'
}

我的问题是我不知道redirect_url是什么,因为我的是一个独立的客户端,并且没有redirect_url。

有没有人在没有使用redirect_url的情况下有关于如何使用该库的示例代码或指针?

1 个答案:

答案 0 :(得分:1)

对于该方案,您可以考虑通过SharePoint App-Only流程授予访问权限。在最新版本的库中,引入了对 SharePoint App-Only 访问的支持:

AuthenticationContext.acquire_token_for_app(client_id,client_secret)

关于如何使用SharePoint App-Only授予访问权限,请关注this article,下面我将总结要点:

  • 首先,您需要setup your app-only principal
  • 下一步是授予新创建的主体
  • 的权限
  • 一旦创建并同意委托人,您就可以使用 委托人的身份和秘密请求访问,如下所示:

示例:

app_settings = {
    'url': 'https://contoso.sharepoint.com/',
    'client_id': '8efc226b-ba3b-4def-a195-4acdb8d20ca9',
    'client_secret': '',
}

context_auth = AuthenticationContext(url=app_settings['url'])
context_auth.acquire_token_for_app(client_id=app_settings['client_id'], client_secret=app_settings['client_secret'])

ctx = ClientContext(app_settings['url'], context_auth)
web = ctx.web
ctx.load(web)
ctx.execute_query()
print("Web site title: {0}".format(web.properties['Title']))