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_secret
和 scopes
。
但是 Azure Active Directory 应用程序创建过程包括范围标识,而本机客户端应用程序不需要 client_secret
。
对于我的本地客户端应用程序授权,我刚刚在示例代码中将 client_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"
这里有大致的记录,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
导入那些 类
我正在尝试使用 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_secret
和 scopes
。
但是 Azure Active Directory 应用程序创建过程包括范围标识,而本机客户端应用程序不需要 client_secret
。
对于我的本地客户端应用程序授权,我刚刚在示例代码中将 client_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"
这里有大致的记录,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