Я пытаюсь выполнить вход через Google в моем приложении, чтобы получить доступ к некоторой информации и управлять некоторыми функциями пользовательского канала Youtube, но он постоянно выдает ошибку, говоря, что пользователь не аутентифицирован.
Это мой код.
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);
require_once 'vendor/autoload.php';
$OAUTH2_CLIENT_ID = '-----------------------------------------';
$OAUTH2_CLIENT_SECRET = '-----------------';
$REDIRECT = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$APPNAME = "Test";
try{
$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$client->setScopes([
'https://www.googleapis.com/auth/youtube.force-ssl',
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/plus.me',
'https://www.googleapis.com/auth/userinfo.profile'
]);
$client->setRedirectUri($REDIRECT);
$client->setApplicationName($APPNAME);
$client->setDeveloperKey('---------------------');
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
}
catch(Exception $e){
die('1: '.$e);
}
$youtube = new Google_Service_YouTube($client);
$google_oauth = new Google_Service_Oauth2($client);
$plusAuth = new Google_Service_Plus($client);
if (isset($_GET['code'])) {
if (strval($_SESSION['state']) !== strval($_GET['state'])) {
die('The session state did not match.');
}
try{
$client->authenticate($_GET['code']);
$user_email = $google_oauth->userinfo->get()->email;
$user_name = $plusAuth->people->get('me')->displayName;
}
catch(Exception $e){
die('2: '.$e);
}
// Code in between
$_SESSION['token'] = $client->getAccessToken();
}
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
//echo "Access Token: " . json_encode($_SESSION['token']);
header('Location: /main.php');
}
if ($client->getAccessToken()) {
$_SESSION['token'] = $client->getAccessToken();
}
else{
$state = mt_rand();
$client->setState($state);
$_SESSION['state'] = $state;
header('Location: '.$client->createAuthUrl());
}
?>
И я получаю эту ошибку:
2: Google_Service_Exception: { "error": { "code": 401, "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "errors": [ { "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "domain": "global", "reason": "unauthorized" } ], "status": "UNAUTHENTICATED" } }
Я не могу найти причину сбоя потока входа, но когда он пытаетсяиспользуйте свойства Google Service Class, там всегда написано, что я не аутентифицирован.
Если вы можете мне помочь, я очень рад.