При входе в систему с Google и использованием PHP Google API PHP я обменяюсь кодом и получаю токен и пользователь. Я сохраняю токен и user_id для этого пользователя. < /P>
data-client_id="xxx"
data-context="signup"
data-callback="onGoogleUser"
data-auto_select="true"
data-itp_support="true">
data-type="standard"
data-size="large"
data-theme="outline"
data-text="sign_in_with"
data-shape="rectangular"
data-logo_alignment="left">
< /code>
function onGoogleUser(__res){
var token = __res.credential;
//token is posted to login script (standard ajax)
}
< /code>
//login script, token received
$token = $_POST['token'];
/*
eyJhbGciOiJSUzI1NiIsImtpZCI6IjA3YjgwYTM2NTQyODUyNWY4YmY3Y2QwODQ2ZDc0YThlZTRlZjM2MjUiLCJ0eXAiOiJKV1QifQ
for info, once it is base64 decoded
{
"alg":"RS256",
"kid":"07b80a365428525f8bf7cd0846d74a8ee4ef3625",
"typ":"JWT"
}
*/
//init google client
$client = new \Google_Client();
//this loads a file containing the keys
$client->setAuthConfig(realpath('google.json'));
//verify token and get user info from payload
$payload = $client->verifyIdToken($token);
if($payload){
//user is logged, $payload->sub is user_id
//retrieve user from DB
$user = getUser($payload->sub);
//both token and user_id are saved in user document for later use
$user->google_id = $payload->sub;
$user->google_token = $token;
//save user into db
saveUser($user);
}
< /code>
В другом скрипте (снова используя пост), позже я пытаюсь использовать службу в качестве моего регистрированного пользователя, повторно используя токен, который был получен и сохранен при входе в систему, выполняя < /p>
//query script
$user = getUser();
$client = new \Google_Client();
//this loads a file containing the keys
$client->setAuthConfig(realpath('google.json'));
//set the user token to the client
$client->setSubject($user->email);
$client->addScope('https://www.googleapis.com/auth/business.manage');
$client->setAccessToken($user->google_token);
//list accounts
$service = new \Google_Service_MyBusinessAccountManagement($client);
$accounts = $service->accounts->listAccounts()->getAccounts();
< /code>
Я получаю ошибку, которую клиент неавторизован < /p>
PHP Fatal error: Uncaught Google\Service\Exception: { "error": "unauthorized_client", "error_description": "Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested." }
< /code>
мне нужно повторно адаптировать клиента? Если я тестирую, используя Google OAuth 2.0 Playground, используя учетные данные моего сервера (так же, как клиент в этом коде), я получаю правильный ответ, но токен отличается от токена JWT, который у меня есть. Нужно ли переоборудовать, чтобы получить аналогичный токен? Разве я не использую токен jwt пользователя? < /P>
{
"access_token": "ya29.a0AZYkNZgRWn7N_ymc09DX_6VeDGObJh36Azb6z1ct2PHF-bgnvU9HND9i_ukAP18Q0LAnWSCNDE3sBslHx8bPbuq3wp0gJhjB25fgzM-jmJ5qzOct8hk1qNCIzy8F9BoRGC4G3D7ygX1fgcDIFdaHpQoq7ynLsxHb-O9769rmaCgYKAeMSARISFQHGX2Mi1q0mbNmw7Cx4wMEjZSyMdw0175",
"scope": "https://www.googleapis.com/auth/business.manage",
"token_type": "Bearer",
"expires_in": 3599,
"refresh_token": "1//04ZhkQNAoJzKcCgYIARAAGAQSNwF-L9Ir4CezWxtYhn57zlSkDK0cCmZOrvTOQhc5lDMrIkbhgp0M8ooxe9Ah7G6vHA0ISdSIAvI"
}
При входе в систему с Google и использованием PHP Google API PHP я обменяюсь кодом и получаю токен и пользователь. Я сохраняю токен и user_id для этого пользователя. < /P> [code]
//init google client $client = new \Google_Client();
//this loads a file containing the keys $client->setAuthConfig(realpath('google.json'));
//verify token and get user info from payload $payload = $client->verifyIdToken($token); if($payload){ //user is logged, $payload->sub is user_id
//retrieve user from DB $user = getUser($payload->sub);
//both token and user_id are saved in user document for later use $user->google_id = $payload->sub; $user->google_token = $token;
//save user into db saveUser($user);
} < /code> В другом скрипте (снова используя пост), позже я пытаюсь использовать службу в качестве моего регистрированного пользователя, повторно используя токен, который был получен и сохранен при входе в систему, выполняя < /p> //query script $user = getUser(); $client = new \Google_Client();
//this loads a file containing the keys $client->setAuthConfig(realpath('google.json'));
//set the user token to the client $client->setSubject($user->email); $client->addScope('https://www.googleapis.com/auth/business.manage'); $client->setAccessToken($user->google_token);
//list accounts $service = new \Google_Service_MyBusinessAccountManagement($client); $accounts = $service->accounts->listAccounts()->getAccounts(); < /code> Я получаю ошибку, которую клиент неавторизован < /p> PHP Fatal error: Uncaught Google\Service\Exception: { "error": "unauthorized_client", "error_description": "Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested." } < /code> мне нужно повторно адаптировать клиента? Если я тестирую, используя Google OAuth 2.0 Playground, используя учетные данные моего сервера (так же, как клиент в этом коде), я получаю правильный ответ, но токен отличается от токена JWT, который у меня есть. Нужно ли переоборудовать, чтобы получить аналогичный токен? Разве я не использую токен jwt пользователя? < /P> { "access_token": "ya29.a0AZYkNZgRWn7N_ymc09DX_6VeDGObJh36Azb6z1ct2PHF-bgnvU9HND9i_ukAP18Q0LAnWSCNDE3sBslHx8bPbuq3wp0gJhjB25fgzM-jmJ5qzOct8hk1qNCIzy8F9BoRGC4G3D7ygX1fgcDIFdaHpQoq7ynLsxHb-O9769rmaCgYKAeMSARISFQHGX2Mi1q0mbNmw7Cx4wMEjZSyMdw0175", "scope": "https://www.googleapis.com/auth/business.manage", "token_type": "Bearer", "expires_in": 3599, "refresh_token": "1//04ZhkQNAoJzKcCgYIARAAGAQSNwF-L9Ir4CezWxtYhn57zlSkDK0cCmZOrvTOQhc5lDMrIkbhgp0M8ooxe9Ah7G6vHA0ISdSIAvI" } [/code]
При входе в систему с Google и использованием PHP Google API PHP я обменяюсь кодом и получаю токен и пользователь. Я сохраняю токен и user_id для этого пользователя.
$client = new \Google_Client();
При входе в систему с Google и использованием PHP Google API PHP я обменяюсь кодом и получаю токен и пользователь. Я сохраняю токен и user_id для этого пользователя.
$client = new \Google_Client();
При входе в систему с Google и использованием PHP Google API PHP я обменяюсь кодом и получаю токен и пользователь. Я сохраняю токен и user_id для этого пользователя.
Я пытаюсь создать авторизацию с помощью GoogleAPI, используя сервисный аккаунт. Цель – получить и вставить данные в календарь Google.
Я создал сервисный аккаунт, поделился им со своим календарем и предоставил разрешения владельца сервисного...
У меня есть приложение Spring Boot, использующее клиент Feign с конфигурацией клиента OkHttp. В настоящее время я создаю новый экземпляр OkHttpClient для каждого запроса, чтобы установить другое имя пользователя для проверки подлинности прокси.
Вот...