我正在尝试从Powershell访问Outlook Rest API 2.0以查看和创建任务。我创建了一个应用程序,并成功检索了access_token和所需的作用域(Tasks.ReadWrite)。查看我的回复:
token_type : Bearer
scope : openid Tasks.ReadWrite
expires_in : 3600
ext_expires_in : 3600
access_token : token_value
id_token : id_token_value
但是,当尝试获取任务列表时,我得到了401响应(未授权)。请参阅下面的Powershell代码:
$header = @{"Bearer" = "$($response.access_token)"}
$task_list = Invoke-RestMethod -Method Get -Header $Header -Uri" https://outlook.office.com/api/v2.0/me/tasks"
以下是例外:
Invoke-RestMethod : the remote server returned an error (401) unauthorized
+ $task_list = Invoke-RestMethod -Method Get -Header $Header -Uri "https ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMetho
d], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCo
mmand
答案 0 :(得分:1)
这不是在标头中传输承载令牌的正确方法。我不是这方面的专家,但是RFC 6750说您应该使用String fullName = "Peter van Der Schyff";
String firstname = fullName.split(" ")[0];
String surname = fullname.substring(fullName.indexOf(' '));
方法将Authorization
标头发送给它,如下所示:
Bearer