2015-07-31 20 views
5

Pracuję nad aplikacją internetową, która umożliwia użytkownikowi połączenie konta AdWords. 1) Tak więc, gdy użytkownik połączył swoje konto AW, otrzymuję token z interfejsu API AW, który zawiera token dostępu i token odświeżania. O ile tak dobrze, to tylko typowy proces OAuth2.Uzyskiwanie ID klienta AdWords bez tokena odświeżania

2) Następnym razem, gdy inny użytkownik połączy jedno konto AW, AW nie dostarczył mi tokena odświeżania, zakładając, że mam go gdzieś przechowywany, co jest oczekiwane.

W tym miejscu problem polega na tym, że nie ma sposobu na uzyskanie informacji o użytkowniku bez tokena odświeżania, co oznacza, że ​​nie mogę zidentyfikować użytkownika, który pobrałby token odświeżania.

używam biblioteki .NET (Google.Apis.Analytics.v3) i nie pozwala mi do żądania informacji o klientach bez podania token odświeżania ...

Oto przykładowy kod:

var tokenResponse = await adWordsService.ExchangeCodeForTokenAsync(code, redirectUri); 
var adWordsUser = adWordsService.GetAdWordsUser(); 
var customerService = (CustomerService)adWordsUser.GetService(AdWordsService.v201502.CustomerService); 
var customer = customerService.get(); 

adWordsService to tylko otoki wokół interfejsu API. więc kiedy wykonać tę linię var customer = customerService.get() otrzymuję następujący błąd:

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)

Developer Token jest tam i tak są wszystkie identyfikatory klientów.

Jeśli dodaję tę linię adWordsUser.Config.AuthToken = tokenResponse.AccessToken; przed wykonaniem połączenia, skarży się na token odświeżania.

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)

Więc pytanie brzmi, w jaki sposób informacje o użytkowniku jeden nabyć (w tym przypadku customerId, zgodnie z tym artykułem https://developers.google.com/adwords/api/docs/guides/optimizing-oauth2-requests#authenticating_multiple_accounts) podczas uwierzytelniania w celu przechowywania token odświeżania?

Odpowiedz

1

Właśnie znalazłem problem w adWordsService. Po utworzeniu AdWordsUser nie jest przypisywany zaktualizowany dostawca uwierzytelniania, który zawiera najnowszy token uwierzytelniania. Po dodaniu tego dostawcy uwierzytelnienia, AdWordsUser nie próbuje odświeżyć tokena, ponieważ token nie wygasł jeszcze, więc nie ma potrzeby używania tokena odświeżania.

Powiązane problemy