$state = sha1(uniqid(mt_rand(), true));
    $_SESSION['state'] = $state;
    // Render the Google+ sign-in button.
    print <<<MARKUP
<!doctype html><html><head>
<script type="text/javascript" src="http://apis.google.com/js/plusone.js"></script>
<script type="text/javascript">
  // The simplest possible solution to this callback. In your application,
  // you would want to replace the button with markup that indicates the state.
  function onSignIn() {
    window.location.reload(true);
  }
</script></head>
<body>
<g:plus action="connect"
  clientid="{$client->getClientId()}"
  redirecturi="{$client->getRedirectUri()}"
  scope="https://www.googleapis.com/auth/plus.moments.write"
  state="{$state}" callback="onSignIn">
</g:plus></body></html>
MARKUP;
} else {
    // Build the moment to write
    $target = new Google_ItemScope();
    $target->url = 'https://developers.google.com/+/plugins/snippet/examples/thing';
    $moment = new Google_Moment();
    $moment->type = "http://schemas.google.com/AddActivity";
    $moment->target = $target;
    // Execute the request
    $moments->moments->insert('me', 'vault', $moment);
    print '<p>Created an AddActivity moment</p>';
Example #2
0
        }
        if (isset($_SESSION[$sessTokenKey]) && isset($_SESSION[$sessTokenKey]['access_token'])) {
            $client->setAccessToken($_SESSION[$sessTokenKey]);
        }
    }
}
xoops_cp_header();
include dirname(__FILE__) . '/mymenu.php';
echo '<h3>' . xelfinderAdminLang('GOOGLEDRIVE_GET_TOKEN') . '</h3>';
if ($php54up) {
    $form = true;
    if ($client) {
        if (empty($_POST) && $client->getAccessToken()) {
            try {
                $aToken = $client->getAccessToken();
                $token = array('client_id' => $client->getClientId(), 'client_secret' => $client->getClientSecret(), 'access_token' => $aToken['access_token']);
                if (isset($aToken['refresh_token'])) {
                    unset($token['access_token']);
                    $token['refresh_token'] = $aToken['refresh_token'];
                }
                $ext_token = json_encode($token);
                echo '<h3>Google Drive API Token</h3>';
                echo '<div><textarea class="allselect" style="width:70%;height:5em;" spellcheck="false">' . $ext_token . '</textarea></div>';
                echo '<h3>Example to Volume Driver Setting</h3>';
                echo '<div><p>Folder ID as root: <input type=text id="xelfinder_googledrive_folder" value="root"></input> "root" is <a href="https://drive.google.com/drive/my-drive" target="_blank">"My Drive" of your Google Drive</a>.</p>';
                echo '<p>You can find the folder ID to the URL(folders/[Folder ID]) of the site of <a href="https://drive.google.com/drive/">GoogleDrive</a>.</p></div>';
                echo '<div><textarea class="allselect" style="width:70%;height:7em;" id="xelfinder_googledrive_volconf" spellcheck="false">xelfinder:flyGoogleDrive:root:GoogleDrive:gid=1|id=gd|ext_token=' . $ext_token . '</textarea></div>';
                echo "<script>(function(\$){\n\t\t\t\t\t\$('#xelfinder_googledrive_folder').on('change keyup mouseup paste', function(e) {\n\t\t\t\t\t\tvar self = \$(this);\n\t\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\t\tvar conf = \$('#xelfinder_googledrive_volconf');\n\t\t\t\t\t\t\t\tdata = conf.val();\n\t\t\t\t\t\t\tconf.val(data.replace(/flyGoogleDrive:[^:]*:/, 'flyGoogleDrive:' + self.val() + ':'));\n\t\t\t\t\t\t}, e.type === 'paste'? 100 : 0);\n\t\t\t\t\t});\n\t\t\t\t\t\$('textarea.allselect').on('focus', function() { \$(this).select(); });\n\t\t\t\t})(jQuery);</script>";
                echo '<h4><a href="' . $selfURL . '&start">Reauthorization</a></h4>';
                $form = false;
            } catch (Google_Exception $e) {
 public function testJsonConfig()
 {
     // Device config
     $client = new Google_Client();
     $device = '{"installed":{"auth_uri":"https://accounts.google.com/o/oauth2/auth","client_secret"' . ':"N0aHCBT1qX1VAcF5J1pJAn6S","token_uri":"https://accounts.google.com/o/oauth2/token",' . '"client_email":"","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","oob"],"client_x509_cert_url"' . ':"","client_id":"123456789.apps.googleusercontent.com","auth_provider_x509_cert_url":' . '"https://www.googleapis.com/oauth2/v1/certs"}}';
     $dObj = json_decode($device, true);
     $client->setAuthConfig($dObj);
     $this->assertEquals($client->getClientId(), $dObj['installed']['client_id']);
     $this->assertEquals($client->getClientSecret(), $dObj['installed']['client_secret']);
     $this->assertEquals($client->getRedirectUri(), $dObj['installed']['redirect_uris'][0]);
     // Web config
     $client = new Google_Client();
     $web = '{"web":{"auth_uri":"https://accounts.google.com/o/oauth2/auth","client_secret"' . ':"lpoubuib8bj-Fmke_YhhyHGgXc","token_uri":"https://accounts.google.com/o/oauth2/token"' . ',"client_email":"*****@*****.**","client_x509_cert_url":' . '"https://www.googleapis.com/robot/v1/metadata/x509/123456789@developer.gserviceaccount.com"' . ',"client_id":"123456789.apps.googleusercontent.com","auth_provider_x509_cert_url":' . '"https://www.googleapis.com/oauth2/v1/certs"}}';
     $wObj = json_decode($web, true);
     $client->setAuthConfig($wObj);
     $this->assertEquals($client->getClientId(), $wObj['web']['client_id']);
     $this->assertEquals($client->getClientSecret(), $wObj['web']['client_secret']);
     $this->assertEquals($client->getRedirectUri(), '');
 }