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

OneDrive API Python SDK - points to login.live.com not mydomain.sharepoint.com

我正在尝试使用 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_SERVER_URL = "https://login.live.com/oauth20_authorize.srf"
AUTH_TOKEN_URL = "https://login.live.com/oauth20_token.srf"

Github issue discussion 表示 OneDrive API Business 仍处于测试阶段,但只需将基本 url 更改为 mydomain.sharepoint.com url 即可使用 SDK for OneDrive API商家例如:

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

这是正确的吗?

编辑以确保相关的附加问题也得到解决:

除了需要在 OneDrive 中修改授权 url 之外,还有其他任何内容需要修改 API Python 用于 OneDrive for Business / Sharepoint 的 SDK 吗?

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

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

对于我的本地客户端应用程序授权,我刚刚在示例代码中将 client_secretscopes 留空,例如:

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

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

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,那么细节会有点隐藏。

如果您查看 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

导入那些 类