Python:使用 Graph API 通过 Outlook 发送邮件 - 使用 microsoft 用户名和密码获取令牌

问题描述 投票:0回答:1

我正在尝试使用Python的office365库来通过Outlook发送邮件。 当我使用 SharePoint 时,身份验证非常简单,如下例所示。

from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.user_credential import UserCredential

sp_credentials = UserCredential(SHAREPOINT_USER,SHAREPOINT_PASSWORD)
sp_con = ClientContext(SHAREPOINT_SITE).with_credentials(sp_credentials)

files = sp_con.web.get_folder_by_server_relative_url(SHAREPOINT_PATH).files
sp_con.load(files).execute_query()

--> 通过上述内容,我能够查看 SharePoint 文件夹中的文件。但通过相同的连接,我能够删除、移动或添加文件。

我刚刚使用了我的微软帐户的用户凭据,一切正常。 但是,对于 Outlook,office365 库使用 MSAL 进行身份验证。 GitHub 页面上给出的示例如下。

import msal
from office365.graph_client import GraphClient

def acquire_token():
    """
    Acquire token via MSAL
    """
    authority_url = 'https://login.microsoftonline.com/{tenant_id_or_name}'
    app = msal.ConfidentialClientApplication(
        authority=authority_url,
        client_id='{client_id}',
        client_credential='{client_secret}'
    )
    token = app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])
    return token


client = GraphClient(acquire_token)

client.me.send_mail(
    subject="Meet for lunch?",
    body="The new cafeteria is open.",
    to_recipients=["[email protected]"]
).execute_query()

此示例迫使我向 Azure Active Directory 注册应用程序,因为我需要该应用程序的客户端 ID 来创建

msal.ConfidentialClientApplication
。我不想那样做。

相反,我寻找一种类似于我用于 SharePoint 的身份验证方法。

您知道一种只需要我提供用户名和密码即可获取

GraphClient()
令牌的方法吗?

我已经尝试过的:

msal.ConfidentialClientApplication
类有一个名为
acquire_token_by_username_password
的函数。我用它替换了
acquire_token_for_client
函数,但仍然面临
ConfidentialClientApplication
需要客户端 ID 的问题。

python outlook microsoft-graph-api access-token msal
1个回答
0
投票

有一些示例如何使用用户名和密码或交互式身份验证进行身份验证。如果您的用户启用了多重身份验证,则使用用户名和密码进行身份验证将不起作用。

用户名和密码验证:

https://github.com/AzureAD/microsoft-authentication-library-for-python/blob/dev/sample/username_password_sample.py

交互式身份验证:

https://github.com/AzureAD/microsoft-authentication-library-for-python/blob/dev/sample/interactive_sample.py

© www.soinside.com 2019 - 2024. All rights reserved.