日历事件无法获取| Microsoft Graph API |使用高级个人前景帐户

时间:2020-05-14 05:04:03

标签: python azure-active-directory microsoft-graph-api adal msal

我正试图从我的个人高级前景帐户获取日历事件。这不是工作帐户。 我有Office 365订阅。使用相同的方法,我已经设置了Azure actuve目录,在其中添加了python Web应用程序,并授予了该应用程序所有必需的权限。通过网络应用访问API时,我可以获取个人资料详细信息,用户和所有用户,但无法获取与事件,日历等相关的数据。 我遇到此错误-“消息”:“租户guid的租户guid \ u00 ******* b5d- * 9-4b -b 1-c 5c *** 2ec8 \ u0027不存在。”

我在msdn以及stackoverflow上查看了许多解决方案,但是每个人都被告知要获得一个我已经使用过的高级帐户,但是问题仍然没有解决。

请帮助解决该问题。提前谢谢:)

我附上 app.config 文件的副本,以供您参考。

import os

CLIENT_SECRET = "client secret key" 

AUTHORITY = "https://login.microsoftonline.com/tenant id"

CLIENT_ID = "client id"

REDIRECT_PATH = "/getAToken"    

ENDPOINT =ENDPOINT = 'https://graph.microsoft.com/v1.0/users/{my id}/events
# I also tried 'ENDPOINT = ' 'https://graph.microsoft.com/v1.0/users/{my id}/calendar/events''

SCOPE = ["User.ReadBasic.All"]

SESSION_TYPE = "filesystem"  # So token cache will be stored in server-side session

1 个答案:

答案 0 :(得分:1)

使用python的'Oauth'类传递您的所有令牌和ADD详细信息,例如客户端ID,客户端密码等。 像这样- (注意配置文件包含我上面提到的所有详细信息。)

OAUTH = OAuth(APP)
MSGRAPH = OAUTH.remote_app(
    'microsoft',
    consumer_key=config.CLIENT_ID,
    consumer_secret=config.CLIENT_SECRET,
    request_token_params={'scope': config.SCOPES},
    base_url=config.RESOURCE + config.API_VERSION + '/',
    request_token_url=None,
    access_token_method='POST',
    access_token_url=config.AUTHORITY_URL + config.TOKEN_ENDPOINT,
    authorize_url=config.AUTHORITY_URL + config.AUTH_ENDPOINT)

我的配置文件:

CLIENT_ID = 'put here'
CLIENT_SECRET = 'put here'
REDIRECT_URI = 'http://localhost:5000/login/authorized'

AUTHORITY_URL = 'https://login.microsoftonline.com/common'

AUTH_ENDPOINT = '/oauth2/v2.0/authorize'
TOKEN_ENDPOINT = '/oauth2/v2.0/token'

RESOURCE = 'https://graph.microsoft.com/'
API_VERSION = 'v1.0'
SCOPES = ['User.Read', 'Mail.Send', 'Files.ReadWrite','Calendars.Read', 'Calendars.ReadWrite'] 

现在您可以像这样调用get事件:

eventResponse = MSGRAPH.get('me/events',headers=request_headers()) #request_headers() return all the requeried headers
print(eventResponce.data)