我在这里遵循了代码:
https://github.com/microsoftgraph/python3-connect-rest-sample
以便能够从没有用户界面的远程计算机访问我的OneDrive文件夹上的Excel工作表。
问题是我需要在我的机器上设置一个烧瓶应用程序才能获得access_token
。
特别是,这意味着我需要启动烧瓶服务器,手动打开浏览器,导航到http://localhost:5000
,这将启动OAuth流程并检索令牌。然后,我将检索到的access_token
发送到我的远程实例,在那里我可以继续工作。
我可以用硒自动完成所有这些,但我觉得这太复杂了。当然,必须有更好的方法以合理的方式做到这一点吗?
答案 0 :(得分:1)
有两种方法可以获得没有提示输入用户名和用户界面的用户界面的令牌。密码和没有授权代码的舞蹈:
这是一个代码片段,展示了这两个:
import adal
import requests
tenant = "contoso.com"
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
username = "foo@contoso.com"
password = "mypassword"
authority = "https://login.microsoftonline.com/" + tenant
RESOURCE = "https://graph.microsoft.com"
context = adal.AuthenticationContext(authority)
# Use this for Client Credentials
#token = context.acquire_token_with_client_credentials(
# RESOURCE,
# client_id,
# client_secret
#)
# Use this for Resource Owner Password Credentials (ROPC)
token = context.acquire_token_with_username_password(RESOURCE, username, password, client_id);
graph_api_endpoint = 'https://graph.microsoft.com/v1.0{0}'
# /me only works with ROPC, for Client Credentials you'll need /<UsersObjectId/
request_url = graph_api_endpoint.format('/me')
headers = {
'User-Agent' : 'python_tutorial/1.0',
'Authorization' : 'Bearer {0}'.format(token["accessToken"]),
'Accept' : 'application/json',
'Content-Type' : 'application/json'
}
response = requests.get(url = request_url, headers = headers)
注意:我正在回答一个非常相似的问题:MS Graph authentication using python