Токен доступа пуст с GuzzleHttp

Когда я пытаюсь подключиться к Microsoft Graph с помощью следующего кода:

$headers = [
    'Authorization: Bearer ' . $this->getAccessToken(),
    'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8',
    'Preference-Applied: odata.track-changes'
];
$response = $this->guzzle->request('GET', 'https://graph.microsoft.com/v1.0/me/calendarview/delta?startdatetime=2017-12-12T00:00:00Z&enddatetime=2020-12-13T00:00:00Z'. ['headers' => $headers], ['debug' => true]);

Что дает мне ошибку: Access token is empty

И отладка дает мне это:

  • About to connect() to graph.microsoft.com port 443 (#0)
  • Trying 40.126.9.112...
  • Connected to graph.microsoft.com (40.126.9.112) port 443 (#0)
  • Initializing NSS with certpath: sql:/etc/pki/nssdb
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none
  • SSL connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • Server certificate:
  • subject: CN=graph.microsoft.com
  • start date: Jan 27 19:09:45 2019 GMT
  • expire date: Jan 27 19:09:45 2021 GMT
  • common name: graph.microsoft.com
  • issuer: CN=Microsoft IT TLS CA 2,OU=Microsoft IT,O=Microsoft Corporation,L=Redmond,ST=Washington,C=US

    GET /v1.0/me/calendarview/delta?startdatetime=2017-12-12T00:00:00Z&enddatetime=2020-12-13T00:00:00ZArray HTTP/1.1 User-Agent: GuzzleHttp/6.3.3 curl/7.29.0 PHP/5.6.40 Host: graph.microsoft.com

< HTTP/1.1 401 Unauthorized < Content-Type: application/json; charset=utf-8 < request-id: c82bfd7f-921f-40b7-a973-38b6630cb2c2 < client-request-id: c82bfd7f-921f-40b7-a973-38b6630cb2c2 < x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"West Europe","Slice":"SliceC","Ring":"5","ScaleUnit":"002","RoleInstance":"AGSFE_IN_45","ADSiteName":"WEU"}} < WWW-Authenticate: Bearer realm = "", authorization_uri = "https://login.microsoftonline.com/common/oauth2/authorize", client_id = "00000003-0000-0000-c000-000000000000" < Strict-Transport-Security: max-age=31536000 < Date: Tue, 09 Apr 2019 08:08:39 GMT < Content-Length: 234

Каким-то образом это работает в Postman, когда я даю те же данные, однако, как вы видите, код после Bearer пуст. Я проверил $this->getAccessToken(), и он определенно содержит токен.

Что я здесь делаю неправильно?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
1 215
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
        $headers = [
        "Authorization" => "Bearer". $token,
        'Content-Type' => 'application/json'
    ];

$response = $this->guzzle->request('GET', 'https://graph.microsoft.com/v1.0/me/calendarview/delta?startdatetime=2017-12-12T00:00:00Z&enddatetime=2020-12-13T00:00:00Z', ['headers' => $headers], ['debug' => true]);

У вас была точка после вашего URL, вместо этого вам нужна запятая. Также ваш массив $headers должен иметь формат, похожий на отношение «$key => $values», которое будет передано в запросе на глотание.

Ах, ты прав, я, должно быть, сделал это, играя. Но это не решило проблему. Я все еще получаю ту же ошибку, только без отладочной информации.

Sinan Samet 09.04.2019 10:26

вы понимаете, что токен отсутствует? Проверьте заголовки, которые использует почтальон, и добавьте их. Вероятно, вам не хватает заголовка Content-Type: application/json, но почтальон может вам очень помочь, потому что он предварительно заполняет их для вас в запросах.

pr1nc3 09.04.2019 10:28

Я добавил заголовки почтальона и даже использовал print_r() для проверки, но, к сожалению, все та же ошибка. Ошибка, которую я все еще получаю: «Токен доступа пуст»

Sinan Samet 09.04.2019 10:34

Я только что увидел свою глупую ошибку, и вы отредактировали, когда я хотел прокомментировать, ха-ха

Sinan Samet 09.04.2019 10:44

Другие вопросы по теме