【发布时间】:2022-11-10 18:30:53
【问题描述】:
我想使用 python 从客户端收件箱中通过 Graph API 提取电子邮件。 我从一个教程开始,并成功地在我的个人收件箱上进行了试验。
我的问题, 每次我的代码生成一个授权 URL。 我必须浏览它(使用网络浏览器库),使用我的凭据登录并复制粘贴授权代码以生成访问令牌。 每次都是大量的手工工作。
问题 : 有没有办法自动化令牌生成的整个过程? 这样我的客户只共享他的应用程序 ID 和客户秘密,并且在没有他的登录凭据的情况下提取电子邮件?
我的代码附在下面 -
import msal
from msal import PublicClientApplication
import webbrowser
import requests
import pandas as pd
APPLICATION_ID="app id"
CLIENT_SECRET="client secret"
authority_url='https://login.microsoftonline.com/common/'
base_url = 'https://graph.microsoft.com/v1.0/'
endpoint_url = base_url+'me'
SCOPES = ['Mail.Read','Mail.ReadBasic']
client_instance = msal.ConfidentialClientApplication(client_id = APPLICATION_ID,client_credential = CLIENT_SECRET,authority = authority_url)
authorization_request_url=client_instance.get_authorization_request_url(SCOPES)
#print(authorization_request_url)
# browsing authorization request URL for retrieving authorization code.
webbrowser.open(authorization_request_url,new=True)
# Manually pasting authorization code.
authorization_code='authorization code from authorization URL'
access_token = client_instance.acquire_token_by_authorization_code(code=authorization_code,scopes=SCOPES)
access_token_id=access_token['access_token']
# Rest of the codes are for hitting the end point and retrieving the messages
任何有关代码建议的帮助将不胜感激。
提前致谢
【问题讨论】:
标签: python-3.x microsoft-graph-api msal msgraph