В настоящее время создается приложение Laravel, которое использует пакет Socialite для успешной аутентификации пользователей с использованием их учетных данных Google. Однако я пытаюсь сделать запрос GET к серверу Google, чтобы получить список контактов данного пользователя, я немного экспериментировал на Google oAuth 2 Playground и пытался эмулировать тот же запрос внутри своего приложения. Я создал следующую функцию:
public function getContactList()
{
$client = new \GuzzleHttp\Client();
$email = \Auth::user()->email;
$token = \Session::get('token');
$json = $client->get('https://www.google.com/m8/feeds/contacts/default/full/', [
'headers' => [
'Authorization' => 'Bearer ' . $token,
],
]);
dd($json);
return $json;
}
После бесконечной борьбы за то, чтобы обойти запрещенные ответы, я наконец получил положительный ответ, но он бесполезен, в теле ничего нет, декодирование с помощью Json_decode дает null, вот ответ:
Response {#198 ▼
-reasonPhrase: "OK"
-statusCode: 200
-effectiveUrl: "https://www.google.com/m8/feeds/contacts/default/full/"
-headers: array:11 [▼
"expires" => array:1 [▼
0 => "Mon, 30 Mar 2015 15:19:52 GMT"
]
"date" => array:1 [▼
0 => "Mon, 30 Mar 2015 15:19:52 GMT"
]
"cache-control" => array:1 [▶]
"vary" => array:2 [▶]
"content-type" => array:1 [▶]
"x-content-type-options" => array:1 [▶]
"x-frame-options" => array:1 [▶]
"x-xss-protection" => array:1 [▶]
"content-length" => array:1 [▶]
"server" => array:1 [▶]
"alternate-protocol" => array:1 [▶]
]
-headerNames: array:11 [▼
"expires" => "Expires"
"date" => "Date"
"cache-control" => "Cache-Control"
"vary" => "Vary"
"content-type" => "Content-Type"
"x-content-type-options" => "X-Content-Type-Options"
"x-frame-options" => "X-Frame-Options"
"x-xss-protection" => "X-XSS-Protection"
"content-length" => "Content-Length"
"server" => "Server"
"alternate-protocol" => "Alternate-Protocol"
]
-body: Stream {#197 ▼
-stream: :stream {@8 ▼
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-size: null
-seekable: true
-readable: true
-writable: true
-uri: "php://temp"
-customMetadata: []
}
-protocolVersion: "1.1"
}
Что я могу изменить или что мне нужно изменить, чтобы получить полный список контактов вместо пустого ответа 200?
ОБНОВЛЕНИЕ. Я провел несколько тестов, чтобы проверить точность моих запросов, и обнаружил, что указанный выше запрос действительно возвращает канал ATOM, что может быть проблемой. Когда я делал запросы к Drive API, которые возвращали ответы JSON, я мог без каких-либо проблем извлечь соответствующие данные, просто проанализировав их с помощью json_decode. Какую функцию мне нужно использовать для анализа данных ATOM в PHP, чтобы получить их?