Как мне сохранить данные Google OAuth в моей базе данных? - PullRequest
0 голосов
/ 02 марта 2020

Я создаю портал, где несколько пользователей могут войти в свои учетные записи Gmail. Я успешно получил значение токена, однако я хочу сохранить его в своей базе данных, но не могу его сохранить. Ниже кода я использую

function mInititalize(){
$client = new Google_Client();
$client->addScope('https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email https://mail.google.com/');
    $client->setClientId(Config('gmail.client_id'));
$client->setClientSecret(Config('gmail.client_secret'));
$client->setRedirectUri('http://localhost:81'.Config('gmail.redirect_url'));
    $loginURL = $client->createAuthUrl();
return redirect($loginURL);
}

После перенаправления или входа пользователя в систему

function mGetToken(){
 $token = $client->fetchAccessTokenWithAuthCode( 'code'); // here i get the 'code' from login URL 
 I pass this code to get token I successfully get token 
     $oAuth = new Google_Service_Oauth2( $client);
     $userData = $oAuth->userinfo_v2_me->get(); // get current user detail
    }

Я хочу сохранить значение $token в базе данных. я получаю сообщение об ошибке

Serialization of 'Closure' is not allowed

Пожалуйста, кто-нибудь поможет мне решить эту проблему Спасибо

1 Ответ

0 голосов
/ 07 марта 2020

Я бы предложил хранить информацию об учетных данных OAuth для API Google не в вашей базе данных, а через сам API. Если вы собираетесь использовать его любым способом аутентификации, вы столкнетесь с проблемами, такими как состояние документов:

Периодически истекают маркеры доступа и они становятся недействительными учетными данными для соответствующего запроса API. Google Identity Platform: Использование OAuth 2.0 для приложений веб-сервера

Но эти же документы также показывают способ, которым вы можете устанавливать или извлекать токен непосредственно в API , Поскольку это данные, относящиеся к процессу авторизации в Google, и, если вы сохраните его, go может устареть, лучше всего позволить им справиться с этим и работать с API. Тот же источник:

Если вам необходимо применить токен доступа к новому объекту Google_Client - например, если вы сохранили токен доступа в сеансе пользователя - используйте метод setAccessToken:

$client->setAccessToken($access_token);
$client->getAccessToken();
...