Alk*_*sai 5 asp.net authentication google-adwords
我正在开发一个允许用户连接AdWords帐户的网络应用程序.1)因此,一旦用户连接他们的AW帐户,我将从AW API获取包含访问令牌和刷新令牌的令牌.到目前为止,这只是一个典型的OAuth2流程.
2)下次另一个用户连接相同的AW帐户时,AW不会向我提供刷新令牌,假设我将其存储在某处,这是预期的.
所以这就是问题,似乎没有办法在没有刷新令牌的情况下获取用户信息,这意味着我无法识别用户来检索刷新令牌.
我正在使用.NET库(Google.Apis.Analytics.v3
),它不允许我在不提供刷新令牌的情况下请求客户信息......
以下是示例代码:
var tokenResponse = await adWordsService.ExchangeCodeForTokenAsync(code, redirectUri);
var adWordsUser = adWordsService.GetAdWordsUser();
var customerService = (CustomerService)adWordsUser.GetService(AdWordsService.v201502.CustomerService);
var customer = customerService.get();
Run Code Online (Sandbox Code Playgroud)
adWordsService
只是API的包装.所以当我执行此行时,var customer = customerService.get()
我收到以下错误:
ArgumentNullException:值不能为null.
参数名称:AdWords API需要开发人员令牌.如果您没有,请参阅https://developers.google.com/adwords/api/docs/signingup上的说明获取.
Google.Api.Ads.AdWords.Lib.AdWordsSoapClient.InitForCall(String methodName,Object []参数)
开发人员令牌就在那里,所有客户端ID都在那里.
如果我adWordsUser.Config.AuthToken = tokenResponse.AccessToken;
在拨打电话之前添加此行,则会抱怨刷新令牌.
ArgumentNullException:值不能为null.
参数名称:看起来您的应用程序未配置为正确使用OAuth2.缺少必需的OAuth2参数RefreshToken.您可以运行Common\Utils\OAuth2TokenGenerator.cs来生成默认的OAuth2配置.
Google.Api.Ads.Common.Lib.OAuth2ProviderBase.ValidateOAuth2Parameter(String propertyName,String propertyValue)
所以问题是,如何在身份验证期间获取用户信息(在这种情况下customerId
,根据本文https://developers.google.com/adwords/api/docs/guides/optimizing-oauth2-requests#authenticating_multiple_accounts)存储刷新令牌的目的是什么?
所以我刚刚发现问题出在adWordsService
. 创建时AdWordsUser
,不会为其分配包含最新身份验证令牌的更新身份验证提供程序。添加此身份验证提供程序后,AdWordsUser
不会尝试刷新令牌,因为令牌尚未过期,因此不需要刷新令牌。
归档时间: |
|
查看次数: |
683 次 |
最近记录: |