Ich arbeite an einer Webanwendung, mit der Nutzer ein AdWords-Konto verknüpfen können. 1) Sobald der Benutzer sein AW-Konto verbunden hat, erhalte ich ein Token von der AW-API, das ein Zugriffstoken und ein Aktualisierungstoken enthält. So weit, so gut, es ist nur ein typischer OAuth2-Prozess.AdWords-Kundennummer ohne Aktualisierungstoken abrufen
2) Wenn ein anderer Benutzer das gleiche AW-Konto das nächste Mal verbindet, würde AW mir kein Refresh-Token zur Verfügung stellen, vorausgesetzt, ich habe es irgendwo gespeichert, was erwartet wird.
Also hier ist das Problem, es scheint keine Möglichkeit zu sein, Benutzerinformationen ohne das Aktualisierungstoken zu erhalten, was bedeutet, dass ich den Benutzer nicht identifizieren kann, um das Aktualisierungstoken abzurufen.
Ich verwende .NET-Bibliothek (Google.Apis.Analytics.v3
) und es erlaubt mir nicht, Kundeninformationen zu verlangen, ohne dass das Aktualisierungs-Token bietet ...
Hier ist der Beispielcode:
var tokenResponse = await adWordsService.ExchangeCodeForTokenAsync(code, redirectUri);
var adWordsUser = adWordsService.GetAdWordsUser();
var customerService = (CustomerService)adWordsUser.GetService(AdWordsService.v201502.CustomerService);
var customer = customerService.get();
adWordsService
ist nur ein Wrapper um die API. so, wenn ich diese Zeile var customer = customerService.get()
ausführen bekomme ich einen folgenden Fehler:
ArgumentNullException: Value cannot be null.
Parameter name: AdWords API requires a developer token. If you don't have one, you can refer to the instructions at https://developers.google.com/adwords/api/docs/signingup to get one.
Google.Api.Ads.AdWords.Lib.AdWordsSoapClient.InitForCall(String methodName, Object[] parameters)
Entwickler-Token ist und so sind alle Client-IDs.
Wenn ich diese Zeile adWordsUser.Config.AuthToken = tokenResponse.AccessToken;
vor dem Aufruf hinzufügen, beschwert es sich über das Aktualisierungstoken.
ArgumentNullException: Value cannot be null.
Parameter name: Looks like your application is not configured to use OAuth2 properly. Required OAuth2 parameter RefreshToken is missing. You may run Common\Utils\OAuth2TokenGenerator.cs to generate a default OAuth2 configuration.
Google.Api.Ads.Common.Lib.OAuth2ProviderBase.ValidateOAuth2Parameter(String propertyName, String propertyValue)
Die Frage ist also, wie erlangt man Benutzerinformationen (in diesem Fall customerId
, nach diesem Artikel https://developers.google.com/adwords/api/docs/guides/optimizing-oauth2-requests#authenticating_multiple_accounts) während der Authentifizierung für den Zweck der Aktualisierungs-Token zum Speichern?