예제 #1
0
 /**
  * @param string $accessType Possible values for access_type include:
  *  {@code "offline"} to request offline access from the user.
  *  {@code "online"} to request online access from the user.
  */
 public function setAccessType($accessType)
 {
     $this->config->setAccessType($accessType);
 }
 public function register(Application $app)
 {
     $app['gapi.services'] = $app->share(function () use($app) {
         $path = __DIR__ . '/../Resources/services.json';
         $data = file_get_contents($path);
         return json_decode($data, true);
     });
     $app['gapi.scopes'] = $app->share(function () use($app) {
         $path = __DIR__ . '/../Resources/scopes.json';
         $data = file_get_contents($path);
         return json_decode($data, true);
     });
     $app['gapi.config'] = $app->share(function () use($app) {
         $options = $app['gapi.options'];
         $config = new \Google_Config();
         if (isset($options['application_name'])) {
             $config->setApplicationName($options['application_name']);
         }
         if (isset($options['client_id'])) {
             $config->setClientId($options['client_id']);
         }
         if (isset($options['client_secret'])) {
             $config->setClientSecret($options['client_secret']);
         }
         if (isset($options['redirect_uri'])) {
             $config->setRedirectUri($options['redirect_uri']);
         }
         if (isset($options['access_type'])) {
             $config->setAccessType($options['access_type']);
         }
         if (isset($options['approval_prompt'])) {
             $config->setApprovalPrompt($options['approval_prompt']);
         }
         if (isset($options['developer_key'])) {
             $config->setDeveloperKey($options['developer_key']);
         }
         return $config;
     });
     $app['gapi.client'] = $app->share(function () use($app) {
         $options = $app['gapi.options'];
         $client = new \Google_Client($app['gapi.config']);
         foreach (array('scope', 'scopes') as $key) {
             if (isset($options[$key]) && $options[$key]) {
                 $scopes = $options[$key];
                 if (!is_array($scopes)) {
                     $scopes = array($scopes);
                 }
                 foreach ($scopes as $scope) {
                     if (isset($app['gapi.scopes'][strtolower($scope)])) {
                         $scope = $app['gapi.scopes'][strtolower($scope)];
                     }
                     $client->addScope($scope);
                 }
             }
         }
         if (isset($options['refresh_token'])) {
             $client->refreshToken($options['refresh_token']);
         }
         return $client;
     });
     $app['gapi.access_token'] = function () use($app) {
         $token = json_decode($app['gapi.client']->getAccessToken());
         if (is_object($token) && isset($token->access_token)) {
             return $token->access_token;
         } else {
             return null;
         }
     };
     foreach ($app['gapi.services'] as $service => $classname) {
         $app['gapi.service.' . $service] = $app->share(function () use($app, $classname) {
             $class = new \ReflectionClass($classname);
             return $class->newInstance($app['gapi.client']);
         });
     }
 }