我需要一个PHP应用程序来定期从Outlook365帐户中检索邮件。
我在this example之后取得了成功,但这需要用户在代码完成其工作之前登录。在代码可以检索邮件之前,它将重定向到登录屏幕。
问题是PHP应用程序应该在没有来自计划任务的用户交互的情况下运行。所以没有人登录。
然后this example使用租户ID,这种方式有效。
典型的回答如下:
{
"token_type": "Bearer",
"expires_in": "3599",
"ext_expires_in": "0",
"expires_on": "1481807261",
"not_before": "1481803361",
"resource": "https://outlook.office.com",
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dC...."
}
它获取了访问令牌等,但是当使用该令牌进行API调用时,我得到了401状态代码。
第一次考试(使用手动登录)给出了这个回复:
{
"token_type": "Bearer",
"scope": "https://outlook.office.com/mail.read ..."
"expires_in": "3599",
"ext_expires_in": "0",
"expires_on": "1481807261",
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI...."
"refresh_token": "OAQABAAAAAADRNYRQ3dhRSrm-4K-adpCJeN_lDCf...."
"id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI...."
}
并使用该访问令牌进行API调用。
注意差异。基于租户的授权不返回refresh_token和id_token,但我不知道这是否与问题有关。
在第一个示例中请求令牌时是否缺少某些参数,还是app settings中某些设置的问题?