我adpting一个基本的脚本,我没有发送标准化的电子邮件列表的电子邮件,使用msal.
我使用msal python lib(v 1.21.0)如下:
import msal
redirect_url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize/"
tokens_dir = r"<PATH>"
token_filename = r"<TOKEN_FILENAME>"
scopes = ["Mail.Send","Mail.ReadWrite","User.Read"]
authority = f"https://login.microsoftonline.com/{tenant_id}/"
app = msal.ConfidentialClientApplication(client_id=client_id, client_credential=client_secret, authority=authority)
url = app.get_authorization_request_url(scopes=scopes, redirect_uri=redirect_url)
code = input("Token auth code:" )
app.acquire_token_by_authorization_code(code, scopes=scopes, redirect_uri=redirect_url)
为了测试,它是写在ipython笔记本上的,所以我访问了“get_authorization_request_url”方法给出的URL,该方法应该给我授权代码。
但是我得到了这个错误AADSTS900144: The request body must contain the following parameter: 'client_id'
。我发现这个post在谈论这个,但是我不知道如何在主体上包含参数而不是查询。
1条答案
按热度按时间ie3xauqp1#
我尝试在我的环境中重现相同的结果,结果如下:
我注册了一个Azure AD应用程序并添加了
API permissions
,如下所示:在我的例子中,我将
redirect_url
设置为https://jwt.ms,如下所示:现在我在Python notebook中运行相同的代码,修改
redirect_url
并打印url
,得到如下代码:答复:
当我点击响应中的URL时,它打开了新的选项卡来选择帐户,如下所示:
登录后,我看到了同意界面,权限如下:
在接受上述同意后,它带我到
redirect_url
,地址栏中的代码如下:当我在
Token auth code:
中输入这段代码时,我成功地在response中获得了令牌,如下所示: