Google OAuth2 автоматический вход / автоматическая аутентификация - PullRequest
0 голосов
/ 28 августа 2018

Мне интересно, есть ли возможный способ автоматического входа в аккаунт? Я использую Google oauth2 для доступа к Google Drive, и каждый раз, когда я хочу использовать его, появляется маленькое окно для входа. Я хотел бы всегда оставаться в системе. Могу ли я сделать это с помощью php / js? Только администратор будет использовать эту функцию.

Редактировать.

В основном у меня есть плагин для GDrive и он работает нормально. Я хотел бы автоматически вызвать другой метод, прежде чем просто войти в Google, и он должен быть сохранен в сессии. Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы можете использовать вход на сервер для Google. Вы можете прочитать больше об этом здесь

Обычно вы получаете access_token для учетной записи Google и сохраняете этот токен вместе с refresh_token. Вы можете использовать эти токены для получения с диска любое количество раз.

0 голосов
/ 28 августа 2018

Предполагая, что у вас есть доступ к учетной записи диска, к которой вы хотите получить доступ, вам следует рассмотреть возможность использования служебной учетной записи. Учетная запись службы похожа на фиктивного пользователя, у нее есть собственная учетная запись диска. Если вы возьмете адрес электронной почты учетной записи службы и предоставите доступ к файлам или каталогам, доступ к которым вы хотите получить, он будет предварительно авторизован.

Сервисы учетных записей работают только на серверных языках.

require_once __DIR__ . '/vendor/autoload.php';
// Use the developers console and download your service account
// credentials in JSON format. Place the file in this directory or
// change the key file location if necessary.
putenv('GOOGLE_APPLICATION_CREDENTIALS='.__DIR__.'/service-account.json');
/**
 * Gets the Google client refreshing auth if needed.
 * Documentation: https://developers.google.com/identity/protocols/OAuth2ServiceAccount
 * Initializes a client object.
 * @return A google client object.
 */
function getGoogleClient() {
    return getServiceAccountClient();
}
/**
 * Builds the Google client object.
 * Documentation: https://developers.google.com/api-client-library/php/auth/service-accounts
 * Scopes will need to be changed depending upon the API's being accessed. 
 * array(Google_Service_Analytics::ANALYTICS_READONLY, Google_Service_Analytics::ANALYTICS)
 * List of Google Scopes: https://developers.google.com/identity/protocols/googlescopes
 * @return A google client object.
 */
function getServiceAccountClient() {
    try {   
        // Create and configure a new client object.        
        $client = new Google_Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope([YOUR SCOPES HERE]);
        return $client;
    } catch (Exception $e) {
        print "An error occurred: " . $e->getMessage();
    }
}

ServiceAccount.php

...