2016-05-15 63 views
2

我想使用OneDrive API Python SDK将文件上载到Office 365 E3帐户SharePoint文件夹。OneDrive API Python SDK - 指向login.live.com不是mydomain.sharepoint.com

如针对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商业/ SharePoint中的身份验证网址吗?

Github README包括用于验证的示例代码,其需要识别client_secretscopes

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

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

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

回答

1

验证了OneDrive的业务是通过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,虽然自认为是描述认证流程的细节都有点隐蔽,如果你只是寻找的T与URL一起使用的SDK。

+0

谢谢,我没有扫描整个验证流程,错过了这两个网址。除OneDrive API Python SDK中需要修改的用于OneDrive for Business/Sharepoint的身份验证URL之外是否还有其他任何内容?我修改了我的问题以包含此内容。 – curtisp

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

+0

好吧,帮助。现在它正在运行,但在'GetAuthCodeServer'的'GetAuthCodeServer.py'中阻塞,返回''socket。错误:[Errno 10049]请求的地址在其上下文中无效我相信redirect_uri不存在(它是本机客户端应用程序)。当我手动创建auth_url到浏览器中时,它会通过url返回代码,虽然页面显示“404 NOT FOUND”。我怎样才能得到它返回代码来完成身份验证? – curtisp

+0

我想用本Python客户端应用程序的Python SDK是有问题的。 'get_auth_code'还需要打开浏览器'webbrowser.open(auth_url)'才能获得授权码。 – curtisp

+0

如果您正在编写本地客户端应用程序,那么我不会推荐使用'GetAuthCodeServer'来获得您提到的确切原因(使用'webbrowser.open()')。此时您正在执行OAuth的步骤。我建议您在平台上查看OAuth和Python的其他示例。 –