Google API PHP-клиент повторно используйте токен пользователя для вызова службы в качестве пользователя после входа в сиPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Google API PHP-клиент повторно используйте токен пользователя для вызова службы в качестве пользователя после входа в си

Сообщение 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, используя учетные данные моего сервера (так же, как клиент в этом коде), я получаю правильный ответ.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... fter-login
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»