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

OneDrive API Python SDK-指向login.live.com而不是mydomain.sharepoint.com,python,azure,sharepoint,office365,onedrive,Python,Azure,Sharepoint,Office365,Onedrive,我正在尝试使用OneDrive API将文件上载到Office 365 E3帐户SharePoint文件夹 如OneDrive for business/SharePoint文件所述,我正在使用Azure AD,它包含在我的Office 365 E3 auth帐户中,并已在中创建了本机客户端应用程序 我希望我需要将auth指向Office 365: mydomain.sharepoint.com 但是,OneDrive API Python SDK(auth_provider.py)似乎将au

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

如OneDrive for business/SharePoint文件所述,我正在使用Azure AD,它包含在我的Office 365 E3 auth帐户中,并已在中创建了本机客户端应用程序

我希望我需要将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"
这表明OneDrive API业务仍处于测试阶段,但仅需将基本URL更改为
mydomain.sharepoint.com
URL即可用于OneDrive API业务的SDK,例如:

AUTH_SERVER_URL = "https://mydomain.sharepoint.com/oauth20_authorize.srf"
AUTH_TOKEN_URL = "https://mydomain.sharepoint.com/oauth20_token.srf"
这是正确的吗

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

除了用于OneDrive for Business/Sharepoint的OneDrive API Python SDK中的身份验证URL之外,是否还有其他需要修改的内容

包括用于身份验证的示例代码,该代码要求识别
client\u secret
scopes

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

对于我的本机客户端应用程序授权,我刚刚在示例代码中将
client\u secret
scopes
留空,例如:

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"
这里大致记录了这一点,但由于它描述的是身份验证流程,因此如果您只是查找SDK使用的两个URL,则详细信息有点隐藏。

如果您查看该模块,您将看到它默认为
api.onedrive.com
。我建议使用以下代码代替
get\u default\u 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)

请确保从onedrivesdk导入HttpProvider、AuthProvider、OneDriveClient中导入带有
的类,谢谢我扫描了auth流并错过了这两个URL。除了用于OneDrive for Business/Sharepoint的OneDrive API Python SDK中的身份验证URL之外,是否还有其他需要修改的内容?我修改了我的问题,加入了这个。好的,这很有帮助。现在它正在运行,但在
GetAuthCodeServer.py
中阻塞
GetAuthCodeServer
返回`
socket.error:[Errno 10049]请求的地址在其上下文中无效
我相信重定向uri不存在(它是本机客户端应用程序)。当我在浏览器中手动创建auth_url时,它返回url中的代码,尽管页面显示
404未找到
。我怎样才能让它返回代码来完成身份验证?我想在本机客户端应用程序中使用这个Python SDK是有问题的。另外,
get\u auth\u code
需要打开浏览器
webbrowser.open(auth\u url)
来获取auth代码。如果您正在编写本机客户端应用程序,那么我不建议使用
GetAuthCodeServer
,原因与您提到的完全相同(使用
webbrowser.open()
)。此时,您正在执行OAuth的步骤。我建议您在您的平台上查看OAuth和Python的其他示例。