При входе в систему с 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, используя учетные данные моего сервера (так же, как клиент в этом коде), я получаю правильный ответ.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... fter-login
Google API PHP-клиент повторно используйте токен пользователя для вызова службы в качестве пользователя после входа в си ⇐ Php
Кемеровские программисты php общаются здесь
1746512446
Anonymous
При входе в систему с 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, используя учетные данные моего сервера (так же, как клиент в этом коде), я получаю правильный ответ.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79607082/google-api-php-client-re-use-user-token-to-call-service-as-user-after-login[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия