Google OAuth2自动登录/自动身份验证

时间:2018-08-28 11:13:47

标签: javascript php google-api google-drive-api google-oauth

我想知道是否有可能自动登录帐户?我正在使用google oauth2来访问google驱动器,每次我要使用它时,都会出现一个小窗口登录。我想始终保持登录状态。我可以使用php / js吗?只有管​​理员可以使用此功能。

编辑。

基本上,我有一个适用于GDrive的插件,并且可以正常工作。我想在登录Google之前自动调用其他方法,并且应该将其存储在会话中。有可能吗?

2 个答案:

答案 0 :(得分:0)

假设您有权访问要访问的驱动器帐户,则应考虑使用服务帐户。服务帐户就像虚拟用户一样,拥有自己的驱动器帐户。如果您使用服务帐户的电子邮件地址并共享文件或目录,则您希望它能够访问它。

服务帐户只能使用服务器端的语言。

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

答案 1 :(得分:0)

您可以使用Google的服务器端登录。您可以详细了解here

基本上,您会获取Google帐户的access_token并将该令牌与refresh_token一起存储。您可以使用这些令牌多次从驱动器中获取数据。