Hello,

I am working on a basic application which does reporting for our clients. 
It work for my MCC account but I want my clients to log in with their 
Adwords accounts and see their campaigns, ad groups and keywords.

Basically, I am having an issue on the first step of OAUTH here.

use Google\Auth\OAuth2;
require_once 'adwords/api/vendor/autoload.php';
use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\v201609\cm\CampaignService;
use Google\AdsApi\AdWords\v201609\cm\OrderBy;
use Google\AdsApi\AdWords\v201609\cm\Paging;
use Google\AdsApi\AdWords\v201609\cm\Selector;
use Google\AdsApi\Common\OAuth2TokenBuilder;

session_start();

$oauth2 = new OAuth2([
    'authorizationUri' => 'https://accounts.google.com/o/oauth2/v2/auth',
    'tokenCredentialUri' => 'https://www.googleapis.com/oauth2/v4/token',
    'redirectUri' => 'http://localhost:32492/adoauth/',
    'clientId' => '****',
    'clientSecret' => '*****',
    'scope' => 'https://www.googleapis.com/auth/adwords'
]);

if (!isset($_GET['code'])) {
    // Create a 'state' token to prevent request forgery.
    // Store it in the session for later validation.
    $oauth2->setState(sha1(openssl_random_pseudo_bytes(1024)));
    $_SESSION['oauth2state'] = $oauth2->getState();

    // Redirect the user to the authorization URL.
    $config = [
        // Set to 'offline' if you require offline access.
        'access_type' => 'offline'
    ];
    header('Location: ' . $oauth2->buildFullAuthorizationUri($config));
    exit;
}
 elseif (empty($_GET['state'])

    || ($_GET['state'] !== $_SESSION['oauth2state'])) {
  unset($_SESSION['oauth2state']);
  exit('Invalid state.');
} else {
    $oauth2->setCode($_GET['code']);
    $authToken = $oauth2->fetchAuthToken();

$session = (new AdWordsSessionBuilder())
    ->fromFile()
    ->withOAuth2Credential($oauth2)
    ->build();

$adWordsServices = new AdWordsServices();

$campaignService = $adWordsServices->get($session, CampaignService::class);
$selector = new Selector();

$selector->setFields(array('Id', 'Name'));
$selector->setOrdering(array(new OrderBy('Name', 'ASCENDING')));

$page = $campaignService->get($selector);
if (isset($page->entries)) {

    foreach ($page->entries as $campaign) {
        $campaigns[] = ['id'=>$campaign->id, 'name'=>$campaign->name, 
'status'=>$campaign->status];
    }
    return $campaigns;
} else {
    print "No campaigns were found.\n";
}
}


So I am giving permissions on consent screen, thenI should get the 
authenticated users data such as campaigns, ad groups. However I am having 
this error;
Fatal error: Uncaught exception 
'Google\AdsApi\AdWords\v201609\cm\ApiException' with message 
'[AuthorizationError.USER_PERMISSION_DENIED @ ; trigger:'<null>']

Can someone please help me what I am missing?

Also I am using two different libraries here, one for oAuth and one for 
Adwords API.

Thank you

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog and Google+:
https://googleadsdeveloper.blogspot.com/
https://plus.google.com/+GoogleAdsDevelopers/posts
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
Visit this group at https://groups.google.com/group/adwords-api.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/19295ded-db0e-4343-aa8c-28e726d9dad0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
  • Authoriz... Minas Gratas
    • Re:... 'Sreelakshmi Sasidharan (AdWords API Team)' via AdWords API Forum
      • ... Minas Gratas
    • Re:... 'Sreelakshmi Sasidharan (AdWords API Team)' via AdWords API Forum
      • ... Minas Gratas
        • ... Josh Averbeck
    • Re:... 'Sreelakshmi Sasidharan (AdWords API Team)' via AdWords API Forum
    • Aut... SUBIN P VASU
      • ... 'Peter Oliquino' via AdWords API Forum

Reply via email to