/**
 * Runs the example.
 */
function UseOAuthExample()
{
    // Set the OAuth consumer key and secret. Anonymous values can be used for
    // testing, and real values can be obtained by registering your application:
    // http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html
    $oauthInfo = array('oauth_consumer_key' => 'anonymous', 'oauth_consumer_secret' => 'anonymous');
    // Create the AdWordsUser and set the OAuth info.
    $user = new AdWordsUser();
    $user->SetOAuthInfo($oauthInfo);
    $user->LogAll();
    // Request a new OAuth token. Web applications should pass in a callback URL
    // to redirect the user to after authorizing the token.
    $user->RequestOAuthToken();
    // Get the authorization URL for the OAuth token.
    $authorizationUrl = $user->GetOAuthAuthorizationUrl();
    // In a web application you would redirect the user to the authorization URL
    // and after approving the token they would be redirected back to the
    // callback URL, with the URL parameter "oauth_verifier" added. For desktop
    // or server applications, spawn a browser to the URL and then have the user
    // enter the verification code that is displayed.
    printf("Log in to your AdWords account and open the following URL: %s\n", $authorizationUrl);
    print 'After approving the token enter the verification code here: ';
    $stdin = fopen('php://stdin', 'r');
    $verifier = trim(fgets($stdin));
    fclose($stdin);
    // Upgrade the authorized token.
    $user->UpgradeOAuthToken($verifier);
    // An upgraded token does not expire and should be stored and reused for
    // every request to the API.
    $oauthInfo = $user->GetOAuthInfo();
    print "OAuth authorization successful.\n";
    print_r($oauthInfo);
    // Get the number of campaigns in the account.
    $campaignService = $user->GetService('CampaignService', ADWORDS_VERSION);
    $selector = new Selector();
    $selector->fields = array('Id');
    $selector->paging = new Paging(0, 0);
    $page = $campaignService->get($selector);
    // Display number of campaigns.
    printf("Found %d campaigns.\n", $page->totalNumEntries);
}
 /**
  * Gets the HTTP headers for the report download request.
  * @param AdWordsUser $user the AdWordsUser to get credentials from
  * @param string $url the URL the request will be made to
  * @param array $options the options for the download
  * @return array and array of strings, which are header names and values
  */
 private static function GetHeaders($user, $url, array $options = NULL)
 {
     $headers = array();
     $version = !empty($options['version']) ? $options['version'] : $user->GetDefaultVersion();
     // Authorization.
     if ($user->GetOAuthInfo()) {
         $oauthParams = $user->GetOAuthHandler()->GetSignedRequestParameters($user->GetOAuthInfo(), $url, 'POST');
         $headers['Authorization'] = 'OAuth ' . $user->GetOAuthHandler()->FormatParametersForHeader($oauthParams);
     } elseif ($user->GetOAuth2Info()) {
         if (!$user->IsOAuth2AccessTokenValid() && $user->CanRefreshOAuth2AccessToken()) {
             $user->RefreshOAuth2AccessToken();
         }
         $oauth2Header = $user->GetOAuth2Handler()->FormatCredentialsForHeader($user->GetOAuth2Info());
         $headers['Authorization'] = $oauth2Header;
     } else {
         $headers['Authorization'] = 'GoogleLogin auth=' . $user->GetAuthToken();
     }
     // Developer token.
     $headers['developerToken'] = $user->GetDeveloperToken();
     // Target client.
     $email = $user->GetEmail();
     $clientId = $user->GetClientId();
     if (isset($clientId)) {
         if (strpos($clientId, '@') !== FALSE) {
             if ($version < 'v201109') {
                 $headers['clientEmail'] = $clientId;
             } else {
                 throw new ReportDownloadException('Client emails are not supported ' . 'in versions v201109 and later.');
             }
         } else {
             $headers['clientCustomerId'] = $clientId;
         }
     } else {
         if ($version < 'v201109' && isset($email)) {
             $headers['clientEmail'] = $email;
         } else {
             throw new ReportDownloadException('The client customer ID must be ' . 'specified for report downloads.');
         }
     }
     // Flags.
     if (isset($options['returnMoneyInMicros'])) {
         $headers['returnMoneyInMicros'] = $options['returnMoneyInMicros'] ? 'true' : 'false';
     }
     return $headers;
 }