2017-08-21 3 views
0

Good Day,Neueste Google Adwords oAuth API-Implementierung

ich Problem habe versucht, meinen adwords API oAuth auf die neuere API-Version, die v201705 ist zu migrieren.

Meine alte Implementierung mit v201609 funktioniert, und jetzt seit dieser Version ist in den Sonnenuntergang gewesen. Ich habe meine App auf die aktuellere API-Version migriert.

Grundsätzlich habe ich Schwierigkeiten, eine Dokumentation von Google oder einer anderen Website zu finden, die zeigt, wie Google oAuth mit der AdWords-API implementiert werden kann, die für die neuesten AdWords API-Versionen relevant ist.

Im Folgenden finden Sie meine aktuellen Code:

$redirectUri = 'http://xxxxxxx/dashboard/accounts/oauth2callback'; 
    $code = $_GET['code']; 
    //$code = Request::query('code'); 

    $user = new AdWordsUser(
          base_path('auth.ini'), 
          null, 
          null, 
          null, 
          base_path('settings.ini'), 
          null 
          ); 

    $OAuth2Handler = $user->GetOAuth2Handler(); 

    // Get the access token using the authorization code. Ensure you use the same 
    // redirect URL used when requesting authorization. 
    $user->SetOAuth2Info(
    $OAuth2Handler->GetAccessToken(
    $user->GetOAuth2Info(), $code, $redirectUri)); 

    // The access token expires but the refresh token obtained for offline use 
    // doesn't, and should be stored for later use. 
    //return $user->GetOAuth2Info(); 
    //$result = json_decode($user->GetOAuth2Info()); 

    $refreshToken = $user->GetOAuth2Info()['refresh_token']; 

Kann mir jemand für die neueste Google Adwords API-Version dieser auf die richtige Umsetzung zeigen?

Unten ist das, was ich habe im Moment zu erreichen versucht, aber offensichtlich ist dies nicht funktioniert und/oder ganz etwas fehlt:

$redirectUri = 'http://xxxxxxx/dashboard/accounts/oauth2callback'; 
    $code = $_GET['code']; 
    //$code = Request::query('code'); 

    /* $user = new AdWordsUser(
          base_path('auth.ini'), 
          null, 
          null, 
          null, 
          base_path('settings.ini'), 
          null 
          ); */ 

    // Generate a refreshable OAuth2 credential for authentication. 
    $oAuth2Credential = (new OAuth2TokenBuilder()) 
     ->fromFile() 
     ->build(); 

    // Construct an API session configured from a properties file and the OAuth2 
    // credentials above. 

    $user = (new AdWordsSessionBuilder()) 
    ->fromFile() 
    ->withOAuth2Credential($oAuth2Credential) 
    ->build(); 

    $OAuth2Handler = $user->GetOAuth2Handler(); 

    // Get the access token using the authorization code. Ensure you use the same 
    // redirect URL used when requesting authorization. 
    $user->SetOAuth2Info(
    $OAuth2Handler->GetAccessToken(
    $user->GetOAuth2Info(), $code, $redirectUri)); 

    // The access token expires but the refresh token obtained for offline use 
    // doesn't, and should be stored for later use. 
    //return $user->GetOAuth2Info(); 
    //$result = json_decode($user->GetOAuth2Info()); 

    $refreshToken = $user->GetOAuth2Info()['refresh_token']; 

    $customer_id = $this->GetClientCustomerName($refreshToken)['customer_id']; 
    //$customer_name = $this->GetClientCustomerName($refreshToken)['customer_name']; 

Dank.

+0

ich es geschafft haben, diese ein, um herauszufinden. –

Antwort

0

Nun, ich habe endlich herausgefunden, dass ich die Google OAuth2-Implementierung verfolgen muss, da ich zuvor die Google Adwords-Implementierung verwendet habe. Wusste nicht, dass beide gleich funktionieren würden.

Unten ist das, was ich bin gekommen, und jetzt funktioniert:

$redirectUri = 'http://xxxxxxx/dashboard/accounts/oauth2callback'; 
    $code = $_GET['code']; 

    $oauth2 = new OAuth2([ 
     'authorizationUri' => 'https://accounts.google.com/o/oauth2/v2/auth', 
     'tokenCredentialUri' => 'https://www.googleapis.com/oauth2/v4/token', 
     'redirectUri' => $redirectUri, 
     'clientId' => $this->client_id, 
     'clientSecret' => $this->client_secret, 
     'scope' => '****' 
    ]); 


    $oauth2->setCode($code); 
    $authToken = $oauth2->fetchAuthToken(); 

    // Store the refresh token for your user in your local storage if you 
    // requested offline access. 
    $refreshToken = $authToken['refresh_token'];