首页 文章

OneDrive API Python SDK - 指向login.live.com而不是mydomain.sharepoint.com

提问于
浏览
2

我正在尝试使用OneDrive API Python SDK将文件上载到Office 365 E3帐户SharePoint文件夹 .

正如OneDrive for Business / SharePoint文件所述,我正在使用我的Office 365 E3帐户中包含的Azure AD进行身份验证,并在Azure AD management中创建了一个本机客户端应用程序应用程序 .

我希望我需要将auth指向Office 365:

mydomain.sharepoint.com

但是,OneDrive API Python SDK(auth_provider.py)似乎将auth指向:

AUTH_SERVER_URL = "https://login.live.com/oauth20_authorize.srf"
AUTH_TOKEN_URL = "https://login.live.com/oauth20_token.srf"

Github issue discussion表示OneDrive API业务仍处于测试阶段,但只需将基本网址更改为 mydomain.sharepoint.com 网址即可使用SDK进行OneDrive API业务,例如:

AUTH_SERVER_URL = "https://mydomain.sharepoint.com/oauth20_authorize.srf"
AUTH_TOKEN_URL = "https://mydomain.sharepoint.com/oauth20_token.srf"

它是否正确?

编辑以确保解决相关的其他问题:

除了需要在OneDrive API Python SDK中修改以用于OneDrive for Business / Sharepoint的auth URL之外还有什么其他内容吗?

Github README包含用于身份验证的示例代码,需要识别 client_secretscopes .

但是,Azure Active Directory应用程序创建过程包括范围标识,而本机客户端应用程序不需要 client_secret .

对于我的原生客户端应用程序授权,我刚刚在示例代码中留下 client_secretscopes 空白,例如:

client_secret = ""
client = onedrivesdk.get_default_client(client_id='xxxxxetc', 
                                            scopes=[])

2 回答

  • 1

    OneDrive for Business的Auth由AAD处理,这意味着您需要指向AAD OAuth 2 endpoints ,它们是:

    AUTH_SERVER_URL = "https://login.microsoftonline.com/common/oauth2/authorize"
    AUTH_TOKEN_URL = "https://login.microsoftonline.com/common/oauth2/token"
    

    这里大致记录了这一点,https://dev.onedrive.com/auth/aad_oauth.htm,尽管由于这是描述身份验证流程,如果您只是在寻找与SDK一起使用的两个URL,则详细信息会有点隐藏 .

  • 1

    如果你看一下onedrivesdk_helpers模块,你会发现它默认为 api.onedrive.com . 我建议使用以下代码代替 get_default_client

    http_provider = HttpProvider()
    auth_provider = AuthProvider(http_provider=http_provider,
                                 client_id="your_app_id",
                                 scopes=[])
    client = OneDriveClient("mydomain.sharepoint.com",
                            auth_provider,
                            http_provider)
    

    确保使用 from onedrivesdk import HttpProvider, AuthProvider, OneDriveClient 导入这些类

相关问题