我正在尝试使用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_secret
和 scopes
.
但是,Azure Active Directory应用程序创建过程包括范围标识,而本机客户端应用程序不需要 client_secret
.
对于我的原生客户端应用程序授权,我刚刚在示例代码中留下 client_secret
和 scopes
空白,例如:
client_secret = ""
client = onedrivesdk.get_default_client(client_id='xxxxxetc',
scopes=[])
2 回答
OneDrive for Business的Auth由AAD处理,这意味着您需要指向AAD OAuth 2 endpoints ,它们是:
这里大致记录了这一点,https://dev.onedrive.com/auth/aad_oauth.htm,尽管由于这是描述身份验证流程,如果您只是在寻找与SDK一起使用的两个URL,则详细信息会有点隐藏 .
如果你看一下onedrivesdk_helpers模块,你会发现它默认为
api.onedrive.com
. 我建议使用以下代码代替get_default_client
:确保使用
from onedrivesdk import HttpProvider, AuthProvider, OneDriveClient
导入这些类