InvalidAuthenticationToken-访问令牌在MSGraph中为空

时间:2019-06-18 08:42:44

标签: php microsoft-graph guzzle

我当前正在处理需要与Outlook同步的日历。我正在使用Microsoft Graph API来这样做。在使用pool之前,我只是使用Guzzle的Promise / All发送要创建的所有事件,但是由于需要发送大量请求,因此我开始使用Pool。

从那时起,由于出现了此异常,我无法再发送请求:

#message: """
    Client error: `POST https://graph.microsoft.com/v1.0/me/events` resulted in a `401 Unauthorized` response:\n
    {\r\n
      "error": {\r\n
        "code": "InvalidAuthenticationToken",\r\n
        "message": "Access token is empty.",\r\n
        "innerError":  (truncated...)\n
    """
  #code: 401

我检查了,令牌在这里并发送。

-request: Request {#133 ▼
    -method: "POST"
    -requestTarget: null
    -uri: Uri {#131 ▶}
    -headers: array:4 [▼
      "User-Agent" => array:1 [▶]
      "Host" => array:1 [▶]
      "headers" => array:3 [▼
        "Authorization" => "Bearer EwBwA8l6BAAURSN/FHlDW5xN74t6GzbtsBBeBUYAAWTzMhExrArj8bNcA90meyaZFL2tGaUi/hMZwCHDmBldeTe1lQmKSaTqXXx/p3wEXqgP89QPu2+GISOcC5qctgaEISu7yrhpUlgd2U2XssPmFL5YW ▶"
        "Content-Type" => "application/json"
        "Prefer" => "outlook.timezone = "Romance Standard Time""
      ]
      "json" => array:5 [▶]
    ]
    -headerNames: array:4 [▶]
    -protocol: "1.1"
    -stream: Stream {#132 ▶}

我的应用程序的权限设置为:

Calendars.ReadWrite 委托和应用程序。 User.ReadWrite 委托和应用程序。

这是我的PHP代码

$requests_create = function ($batch, $accessToken){
    foreach ($batch as $event){
        yield new Request('POST', OUTLOOK_CALENDAR, [
            'headers' => [
                'Authorization' => 'Bearer '.$accessToken,
                'Content-Type' => 'application/json',
                'Prefer' => 'outlook.timezone = "Romance Standard Time"'
            ],
            'json' => $event
        ]);
    };
};

$pool_create = new Pool($client, $requests_create($events_outlook_create, $accessToken), [
    'concurrency' => '5',
    'fulfilled' => function ($response, $index){
        dump($response);    
    },
    'rejected' => function($reason, $index){
        dump($reason);    
    }
]);

$promise = $pool_create->promise();
$promise->wait();

当我询问访问令牌时,这就是我从Azure中获得的信息:

{#79 ▼
  +"token_type": "Bearer"
  +"scope": "openid Calendars.ReadWrite User.ReadWrite"
  +"expires_in": 3600
  +"ext_expires_in": 3600
  +"access_token": "EwBwA8l6BAAURSN/FHlDW5xN74t6GzbtsBBeBUYAAd2O6oi6fdg0zdsx2kQ8PBkG/ESLWZ/eVkJo2lzm2EvTkz0FjJL56NBAeaqAVr/7o53ewvz9VKFROdGOsudZ6OG9HURaH1/cwWW4peM4rIOeUu3HyaV5QyiVP0LPAEbb/kuBEFhbcg7tVEUuT49m8DN5bb+bvWoMRpfd8KwkPQ6+ryTfR1Fc33UISjeVMwS8hewb3TEasGgOIf4Y59U2hvv1duKiKcAEpPDXWcvI3Jig0X7p7oDVmioahRp0n1MJB5sFXM4ZOpcBgoqZxSh2qnxmJY4ROIOQHDJ8OXS0vEx9uYfYaTb9f27manJzUXxcfbs8D2cBqA/RSRSLwPLqnnADZgAACPylsI4j40kGQAKSTmlvzVal99IvDQrF5KbubWTs9P9AZD8PAKHR79PqWySrItHwa9v+FuRAUCOXGPYquq8F4cqfRlGAeq1re1U0i60AK8xi+RJy4sHApsSDbtb+/ceeHNBvECdC98O8uBtJlXPUELe3KykPS+8b/OE8oplR0PCp9OJHfVFBR/RqFG0fm2Goia6kWuxyuiHvjxOy+pnnQZqF1BMeA5OMMXrBY7la/hCMdqJ48jBj+SzJO21RJ24YeLza5aoHrkvNKh4IAK/ohYxqALQsjzUBFXSqfZOrdXjtjMK7I+H2U87WtUoTWIabof3X/odvOnh0crGAwJIhEdVWrs4siZ0PgHmm25W0Q868YSl/Ks/Od7q0AnsfAMLXlEF2dBwOnJ5TOjRoCuVHsXHQixDczA8cT2aj2SkrRgpG9NwsobIVUH0E6UeYV0tI5ORok2X7nnADpLCvvAC6CJ1XdoV108g+qJiU5oZ8fP8zAjtvPsO0ssPZnOimrDXbo++2RMctYUjvQLdo6TFX3K9MtzM549e9m2/nuQ5202VvQfpcOouh+9W51c49tHuWKVNRJqrfTLIgdWhj8F1YQ5KRbyXftbl1a3rpviAQaPC6aTCq3sCot+e6GG3cSmnlGTSa0efYLV13i3SNZUuaxqmpdgnzeBK7EHhy3rnPN/lpALjnr2EI66LGRiFpOe5a2jEixuhXa30NUq+Ho902sU5hdbzmAm4L1edAd9GVOunf3NzSp5vJEmq9n1eiBpJ36B2UZFz9UNQilMl1Ag== ◀"
  +"refresh_token": "MCQg*yrUESgsPIpYt7dMlM5wagLdhtkxy36y5YEgiraS6tmGqcrQ2i9XWh5rLdrGILMCfcExGuN20TnQworjo!NosGk9FOKodfHimfQ0DBtp!0zfza5Mz7hT*g1o7kY8AiUFQLZzCvtcWdEI7F5a!!Glkqjp3j5o ▶"
  +"id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjFMVE16YWtpaGlSbGFfOHoyQkVKVlhlV01xbyJ9.eyJ2ZXIiOiIyLjAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTE ▶"
}

0 个答案:

没有答案